The code compiles fine, but when it is run, the menu will come up twice and it will say invalid keypressed even when nothing is pressed. When it does the computations it always gives the incorrect answer of 0.00..Thanks in advance for any help!
Code:
#include <stdio.h>
#include <stdlib.h>
#define pi 3.141592
void GetInput (void);
void GetOption (void);
void Radius (void);
void Circumference (void);
void SurfaceArea (void);
void Volume (void);
int main ()
{
GetInput();
GetOption();
return 0;
}
void GetInput (void)
{
float diameter;
printf("\n\nEnter diameter in meters: ");
scanf("%f",&diameter);
while ( diameter < 0.0 )
{
printf("\nMust be greater than 0.0. Try again\n");
printf("\nEnter diameter in meters: ");
scanf("%f",&diameter);
}
}
void GetOption(void)
{
char choice;
start:
printf("Compute what?:\n");
printf("\t -> (R)adius\n");
printf("\t -> (C)ircumerfece\n");
printf("\t -> (S)urface Area\n");
printf("\t -> (V)olume\n");
printf("\t -> (Q)uit\n");
printf("Your choice: ");
scanf("%c",&choice);
printf("------------\n");
switch(choice)
{
case 'r': case 'R':
Radius();
GetOption();
case 'c': case 'C':
Circumference();
GetOption();
case 's': case 'S':
SurfaceArea();
GetOption();
case 'v': case 'V':
Volume();
GetOption();
case 'q': case 'Q':
exit(EXIT_SUCCESS);
default:
printf("Invalid key pressed, Try Again\n");
goto start;
}
}
void Radius(void)
{
float diameter,ans;
ans = ( diameter / 2 );
printf("Radius is %f meters\n",ans);
}
void Circumference(void)
{
float diameter,ans;
ans = 2 * pi * diameter ;
printf("Circumference is %f meters",ans);
}
void SurfaceArea(void)
{
float diameter,ans,radius;
radius = (diameter / 2);
ans = pi * (radius * radius);
printf("Surface Area is %f square meters",ans);
}
void Volume(void)
{
float diameter,ans,ans2;
ans = pi * (diameter / 2) * diameter;
ans2 = ans * ans;
printf("Volume is %f cubic meters",ans2);
}