In: Computer Science
Code and document the following functions using NON-RECURSIVE
ITERATION only.
Test the functions by calling them from a simple interactive main()
function using a menu, with different values used to select the
choice of function. Overall, you should have one C program (call it
Lab1.c) containing one main() function and 5 other functions, where
the functions are called based on an interactive user menu. The
program should contain a loop that permits users to enter a new
choice of function for each loop, until exit from the loop
explicitly.
1
Factorial(0) = 1;
Factorial(n) = n * (n-1) * . . . * 2 * 1
Requirement: n >= 0; reject with error message
otherwise
2
Fibonacci(0) = 0;
Fibonacci(1) = 1;
Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2);
Requirement: n >= 0; reject with error message
otherwise
3
gcd (x, y) = x, if y=0
gcd (x, y) = gcd (y, x MOD y), if y > 0
Requirement: x and y both > 0; reject with error message
otherwise
4
Power(a,b) = ??
Requirement: a > 0, b > 0, b is an integer; reject with
error message otherwise
5
digProduct (x) = x if x <9
digProduct (x) = rightDigit * digProduct ( x/10)
Requirement: x is an unsigned integer (> 0); reject with
error message otherwise
Sample Interaction
Lab 1
1 - int Factorial(int n);
2 - int Fibonacci(int n);
3 - int Gcd(int x, int y);
4 - double Power(int a, int b);
5 – int digProduct (int x);
0 - QUIT
Please enter a selection: 6
Invalid Input.
Lab 1
1 - int Factorial(int n);
2 - int Fibonacci(int n);
3 - int Gcd(int x, int y);
4 - double Power(int a, int b);
5 – int digProduct (int x);
0 - QUIT
Please enter a selection: 1
Enter a positive Integer: 5
Answer: 120
Lab 1
1 - int Factorial(int n);
2 - int Fibonacci(int n);
3 - int Gcd(int x, int y);
4 - double Power(int a, int b);
5 – int digProduct (int x);
0 - QUIT
Please enter a selection: 4
Enter the first positive Integer: 2
Enter the second positive Integer: 3
Answer: 8
Lab 1
1 - int Factorial(int n);
2 - int Fibonacci(int n);
3 - int Gcd(int x, int y);
4 - double Power(int a, int b);
5 – int digProduct (int x);
0 - QUIT
Please enter a selection: 0
Goodbye!
#include <stdio.h>
// function to calculate factorial of number
int Factorial(int n) {
// if number is negative
if(n < 0) {
printf("Invalid input!!\n\n");
return -1;
}
// calculate factorial
int fact = 1;
for(int i = 1; i <= n; i++) {
fact = fact * i;
}
// return the result
return fact;
}
// function to find the fibonacci number
int Fibonacci(int n) {
// if n is negative
if (n < 0) {
printf("Invalid input!!\n\n");
return -1;
}
// declaring and initializing variables
int first = 0;
int second = 1;
int next = 1;
if(n == 0) {
return first;
}
else if(n == 1) {
return second;
}
else{
// calculting the nth fibonacci number
for(int i = 2; i <= n; i++) {
next = first + second;
first = second;
second = next;
}
}
// return the result
return next;
}
// function to calculate the gcd of two number
int gcd(int x, int y) {
// if numbers are less than 1
if(x < 1 || y < 1) {
printf("Invalid input!!\n\n");
return -1;
}
// calculating gcd
// while both number are not equal
while(x != y) {
// if x is greater
if(x > y){
x = x - y;
}
// if y is greater
else {
y = y - x;
}
}
// return the result
return x;
}
// function to calculate the a to the power b
double Power(int a, int b) {
// validating input
if(a < 1 || b < 0) {
printf("Invalid input!!\n\n");
return -1;
}
double result = 0;
// if b is 0 which mean a raised to power 0 which is always 1
if(b == 0) {
return 1;
}
else {
// calculating the power
for(int i = 1; i < b; i++) {
result = result + (a * a);
}
}
// return the result
return result;
}
// function to calculate the product of the digits of x
int digProduct(int x) {
// if x is negative
if(x < 1) {
printf("Invalid input!!\n\n");
return -1;
}
// if x is a single digit number
if(x <= 9) {
return x;
}
int result = 1;
// while x is positive
while(x > 0) {
// calcualting product
result = result * (x % 10);
// reducing x by a place
x = x / 10;
}
// return the result
return result;
}
// main function to drive the code
int main(void) {
// using loop to run the code until user wants to quit
while(1) {
// display menu
printf("Lab 1\n");
printf("1 - int Factorial(int n);\n");
printf("2 - int Fibonacci(int n);\n");
printf("3 - int Gcd(int x, int y);\n");
printf("4 - double Power(int a, int b);\n");
printf("5 – int digProduct (int x);\n");
printf("0 - QUIT\n");
// read user option
int option;
printf("Please enter a selection: ");
scanf("%d", &option);
// validate option
if(option < 0 || option > 5) {
printf("Invalid Input.\n\n");
continue;
}
// perform the required operation as option selected
else {
if(option == 0) {
printf("Goodbye!");
break;
}
else if(option == 1) {
int n;
printf("Enter a positive Integer: ");
scanf("%d", &n);
printf("Answer: %d\n\n", Factorial(n));
}
else if(option == 2) {
int n;
printf("Enter a positive Integer: ");
scanf("%d", &n);
printf("Answer: %d\n\n", Fibonacci(n));
}
else if(option == 3) {
int x, y;
printf("Enter first positive Integer: ");
scanf("%d", &x);
printf("Enter second positive Integer: ");
scanf("%d", &y);
printf("Answer: %d\n\n", gcd(x, y));
}
else if(option == 4) {
int a, b;
printf("Enter first positive Integer: ");
scanf("%d", &a);
printf("Enter second positive Integer: ");
scanf("%d", &b);
printf("Answer: %lf\n\n", Power(a, b));
}
else if(option == 5) {
int x;
printf("Enter a positive Integer (greater than 0): ");
scanf("%d", &x);
printf("Answer: %d\n\n", digProduct(x));
}
}
}
}

FOR HELP PLEASE COMMENT.
THANK YOU.