Первая функция должна получить число и передать его обратно в main, затем это значение нужно передать во вторую функцию, которая вычисляет факториал и передает это значение обратно в main с результатом, печатаемым в третьей и последней функции.
Программа рассчитывает факториал числа, которое вводится. Мне нужно держать цикл. Я не уверен, что происходит не так, я возвращаю значения мусора, поэтому я думаю, что теряю значение где-то или не сохраняю значение.
Также приветствуется любая общая помощь.
#include <stdio.h>
void GetData(int &x)
{
printf("Please enter a number:\n");
scanf("%d%*c", &x);
return;
}
int Factorial(int x)
{
int factorial = 1;
int i;
for(i = 1; i <= x; i++)
{
factorial = factorial * i;
}
return(x);
}
void PrintResults(int factorial)
{
printf("The factorial = %d\n", factorial);
return;
}
int main()
{
int x, factorial;
GetData(x);
Factorial(x);PrintResults(factorial);
return(0);
}
Прежде всего, вы должны изменить свой звонок на GetData
к:
GetData(&x);
как вы хотите передать указатель. Затем его объявление должно измениться на:
void GetData(int *x)
{
printf("Please enter a number:\n");
scanf("%d%*c", x);
}
Затем вы должны вернуть переменную factorial
вместо x
, Изменить строку:
return(x);
к:
return(factorial);
и, следовательно, позвонить Factorial
функционировать следующим образом:
factorial = Factorial(x);
как сейчас, переменная factorial
неинициализирован, и, передав его Factorial
вы будете получать мусор, как вы сказали.
#include <stdio.h>
void GetData(int &x)
{
printf("Please enter a number:\n");
scanf("%d%*c", &x);
}
int Factorial(int x)
{
int factorial = 1;
for(int i = 1; i <= x; i++)
{
factorial = factorial * i;
}
return(factorial);
}
void PrintResults(int factorial)
{
printf("The factorial = %d\n", factorial);
}
int main()
{
int x; // Declaring x;
getData(x); // Initializing x
int factorial = Factorial(x); // Using x to compute factorial and store result in variable
printResult(factorail); // Print that variable
}
Попробуйте, это должно сработать, но я не могу скомпилировать его в данный момент.
Я не использовал указатель, так как вы, кажется, не нуждались в них, но предпочли использовать C ++?
Я удалил твой return;
как ваши функции возвращаются void
, бесполезно и запутанно даже писать это.