Menu Driven Program Write a program that uses a random number generator to gener
ID: 3589799 • Letter: M
Question
Menu Driven Program Write a program that uses a random number generator to generate a two digit positive integer and allows user to perform one or more of the following operations: • Double the number • Reverse the digit of the number • Raise the number to the power of 2, 3, or 4 • Sum the digits of the number. • Raise the first digit to the power of the second digit if the number is a two digit number. After performing an operation if the number is less than 10, add 10, to the number. Also, after each operation determine if the number is prime. Each successive operation should be performed on the number generated by the last operation. Your program should not contain any global variables and each these operations must be implemented by a separate function. Also, your program should be menu driven. this question is from chapter of string type namespace, user defined simple data type chapter and cant use headerfile stdlib.h
Explanation / Answer
Description of the user defined functions :
1. int raiseDigits(int num) : Raise the first digit to the power of the second digit
2. int sumOfDigits(int num) : Finds the sum of the digits
3. int reverseNumber(int num) : Reverses the number
4. int doubleNumber(int num) : Doubles the number
5. int pow(int,int) : Raises one number to the other number
6. int isTwoDigits(int num) : Validates whether the randomly generated number is valid or not(as a precautionary step)
Following is the program :
#include<stdio.h>
int raiseDigits(int num);
int sumOfDigits(int num);
int reverseNumber(int num);
int doubleNumber(int num);
int pow(int num1,int num2);
int isTwoDigit(int num);
int makeMenu(int double_digit);
int actionAfterSelection(int num,int choice);
int main(){
int choice=1;
int random_number;
while(choice){
random_number = rand()%100;
printf("The randomly generated number is : %d ",random_number);
printf("What do you wish to do with it? ");
if(!isTwoDigit(random_number)){
printf("Invalid Number generated!! Exiting");
break;
}
choice = makeMenu(isTwoDigit(random_number));
if(choice == 0){
break;
}
printf("The result is : %d ",actionAfterSelection(random_number,choice));
}
return 0;
}
int raiseDigits(int num){
return pow(num%10,num/10);
}
int sumOfDigits(int num){
int sum = 0;
while(num > 0){
sum = sum + (num%10);
num = num / 10;
}
return sum;
}
int reverseNumber(int num){
int r = 0;
while(num > 0){
r = (r*10) + (num%10);
num = num/10;
}
return r;
}
int doubleNumber(int num){
return 2*num;
}
int pow(int num1,int num2){
int result = 1;
int i;
for(i=0;i<num2;i++){
result = result*num1;
}
return result;
}
int isTwoDigit(int num){
if(num < 9){
return 0;
}else{
return 1;
}
}
int makeMenu(int double_digit){
int choice;
printf("1.Double the number. ");
printf("2.Reverse the number. ");
printf("3.Raise the number to the power of 2,3 or 4. ");
printf("4.Sum the digits of the number. ");
if(double_digit == 1){
printf("5.Raise the first digit to the power of the second digit. ");
}
printf("0.Exit ");
printf("Enter your choice:");
scanf("%d",&choice);
return choice;
}
int actionAfterSelection(int num,int choice){
int returnVal;
int powerChoice;
switch(choice){
case 1:
returnVal = doubleNumber(num);
break;
case 2 :
returnVal = reverseNumber(num);
break;
case 3 :
printf("******MENU 02******** ");
printf("1.Raise to the power 2 ");
printf("2.Raise to the power 3 ");
printf("3.Raise to the power 4 ");
printf("Enter your choice :");
scanf("%d",&powerChoice);
if(powerChoice == 1){
returnVal = pow(num,2);
}else if(powerChoice == 2){
returnVal = pow(num,3);
}else if(powerChoice == 3){
returnVal = pow(num,4);
}else{
printf("Wrong choice entered!! ");
}
break;
case 4 :
returnVal = sumOfDigits(num);
break;
case 5 :
returnVal = raiseDigits(num);
break;
default:
returnVal = -1;
printf("In default case ");
}
return returnVal > 0 && returnVal < 10?returnVal + 10:returnVal;
}