Только начал изучать C, и было бы здорово, если бы вы могли помочь мне со следующим:
Я только что написал программу, которая вычисляет факториал натурального числа, введенного пользователем. Если число отрицательное или символ, оно должно уведомить пользователя с сообщением You have not entered a natural number.
. Это сообщение приходит от функции check_if_valid_value
.
. До сих пор оно отображало это сообщение при вводе символов, но, похоже, не работает с отрицательными значениями. Я думал, что приведение переменной как long long unsigned
поможет, но похоже, что это не так. Дело в том, что функция scanf()
возвращает 0
, поэтому не уверен, почему программа не запускает функцию check_if_valid_value
, поэтому возвращает сообщение: You have not entered a natural number.
Я с нетерпением жду чтения любые предложения по улучшению этого кода!
#include <stdio.h>
#include <stdlib.h>
void check_if_valid_value(int value_entered)
{
if (value_entered != 1)
{
printf("You have not entered a natural number.\n");
exit(1);
}
}
void do_the_factorial(int p)
{
int i;
unsigned long long int factorial=1;
for (i = 1; i <= p; ++i)
{
factorial=factorial*i;
printf("%llu\n", factorial);
}
}
int main(void)
{
int value_entered, p;
printf("Enter a natural number:");
value_entered=scanf("%llu",&p);
check_if_valid_value(value_entered);
do_the_factorial(p);
return 0;
}