The first function needs to get the number and pass it back to main, this value then needs to be passed into a second function that calculates the factorial and passes that value back to main with the result being printed in the third and final function.
The program calculates the factorial of a number that is input. I need to keep the for loop. I'm not sure what's going wrong, I get garbage values back, so I think I'm losing a value somewhere or not storing a value.
Also any general help is appreciated.
#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);
}
First of all, you should change your call to GetData
to :
GetData(&x);
as you want to pass a pointer. Then, its declaration should change to :
void GetData(int *x)
{
printf("Please enter a number:\n");
scanf("%d%*c", x);
}
Then, you should return variable factorial
instead of x
. Change line :
return(x);
to :
return(factorial);
and consequently call Factorial
function as follows :
factorial = Factorial(x);
as right now, variable factorial
is uninitialized, and by passing it to Factorial
you will be getting garbage, as you said.