Hi,
I have made a simple menu program and use switch to handle the choices. The problem is, if i enter a number, it sends it into an infinite loop instead of the default command to say invalid input.
Does anyone know why this is?
Thanks
Code:
#include <stdio.h>
void menu();
void add()
{
float a, b, ans;
a = 0;
b = 0;
ans = 0;
printf("********************************\n");
printf(" ADDITION\n\n");
printf("Enter first addend: ");
scanf("%f", &a);
printf("Enter second addend: ");
scanf("%f", &b);
ans = a+b;
printf("\n %f plus %f equals %f \n", a, b, ans);
menu();
}
void subtract()
{
float a, b, ans;
a = 0;
b = 0;
ans = 0;
printf("********************************\n");
printf(" SUBTRACTION\n\n");
printf("Enter Minuend: ");
scanf("%f", &a);
printf("Enter Subtrahend: ");
scanf("%f", &b);
ans = a-b;
printf("\n %f minus %f equals %f \n", a, b, ans);
menu();
}
void multiply()
{
float a, b, ans;
a = 0;
b = 0;
ans = 0;
printf("********************************\n");
printf(" MULTIPLICATION\n\n");
printf("Enter Multiplicand: ");
scanf("%f", &a);
printf("Enter Multiplier: ");
scanf("%f", &b);
ans = a*b;
printf("\n %f plus %f times %f \n", a, b, ans);
menu();
}
void divide()
{
float a, b, ans;
a = 0;
b = 0;
ans = 0;
printf("********************************\n");
printf(" DIVISION\n\n");
printf("Enter Dividend: ");
scanf("%f", &a);
printf("Enter Divisor: ");
scanf("%f", &b);
ans = a/b;
printf("\n %f divided by %f equals %f \n", a, b, ans);
menu();
}
void retry()
{
menu();
}
void menu()
{
int ans = 0;
printf("\n\nWhat would you like to do?\n");
printf("1. Add: \n");
printf("2. Subtract: \n");
printf("3. Multiply: \n");
printf("4. Divide: \n");
scanf("%d", &ans);
switch(ans)
{
case 1:
add();
break;
case 2:
subtract();
break;
case 3:
multiply();
break;
case 4:
divide();
break;
default:
printf("Invalid input!!\n");
retry();
break;
}
}
int main()
{
menu();
return 0;
}