text: /* ************************************************************************** */
  /*                                                                            */
  /*                                                        :::      ::::::::   */
  /*   ft_iterative_factorial.c                           :+:      :+:    :+:   */
  /*                                                    +:+ +:+         +:+     */
  /*   By: evgenkarlson <RTFM@42.fr>                  +#+  +:+       +#+        */
  /*                                                +#+#+#+#+#+   +#+           */
  /*   Created: 2020/02/14 12:33:14 by evgenkarlson      #+#    #+#             */
  /*   Updated: 2020/02/15 10:51:23 by evgenkarlson     ###   ########.fr       */
  /*                                                                            */
  /* ************************************************************************** */
  /*   	команда для компиляции и одновременного запуска                       */
  /*                                                                            */
  /*  gcc -Wall -Werror -Wextra test.c && chmod +x ./a.out && ./a.out	   	      */
  /* ************************************************************************** */
  
  
  #include <unistd.h>
  
  /* ************************************************************************** */
  /* ************************************************************************** */
  /* ************************************************************************** */
  
  void	ft_putchar(char c)			/* функция вывода символа */
  {
  	write(1, &c, 1);
  }
  
  /* ************************************************************************** */
  /* ************************************************************************** */
  /* ************************************************************************** */
  
  void	ft_putnbr(int nb)
  {
  	int	temp;
  	int	size;
  
  	size = 1;
  	if (nb < 0)
  	{
  		ft_putchar('-');
  		nb = -nb;
  	}
  	temp = nb;
  	while ((temp /= 10) > 0)
  		size *= 10;
  	temp = nb;
  	while (size)
  	{
  		ft_putchar((char)((temp / size)) + 48);
  		temp %= size;
  		size /= 10;
  	}
  }
  
  /* ************************************************************************** */
  /* ************************************************************************** */
  /* ************************************************************************** */
  
  int		ft_iterative_factorial(int nb)/* Функция вычисления факториала нужного нам числа. */
  {
  	int	total;						/* Обьявим переменную для хранения добытого нами результата. */
  
  	if (nb < 0 || nb > 12)			/* Факториал типа "int" имеет ограничения так что тут мы проверим соответсвует ли условиям число "nb". */
  		return (0);					/* Если не соответствует то завершаем функцию и возвращаем (0). */
  	if (nb < 2)						/* Так же, если "nb" меньше двух т.е. равно одному или нулю */
  		return (1);					/* То мы возвращаем (1). */
  	total = nb--;					/* Инициализируем переменную числом "nb" для начала вычислений Факториала числа "nb". */
  	while (nb > 1)					/* Запускаем цикл который будет вычислять Факториала числа "nb". */
  	{
  		total *= nb;				/* Для вычисления Факториала мы умножаем переменную total на переменную "nb" */
  		nb--;						/* И уменьшаем число в переменной "nb" на один, чтобы при след итерации умножить результат хранящийся в "total"
  									 * на уже уменьшеное число из переменной "nb". И так далее, до тех пор, пока переменная "nb" не станет равна нулю */
  	}
  	return (total);
  }
  
  /* ************************************************************************** */
  /* ************************************************************************** */
  /* ************************************************************************** */
  
  int 	main(void)
  {
  	int r;
  
  	r = ft_iterative_factorial(7);
  
  	ft_putnbr(r);
  
  	return (0);
  }
  