Hey everyone! I'm really, really desperate now. My prof in Computer Science is of no help and is really rude so I'm stuck here not knowing what I did wrong.
Our assignment is:
Write a complete and correct C++ program that calculates and prints
the diameter, the circumference, or the area of a circle, given the
radius.
I have written a code but it won't run! I don't understand anymore... can someone help me?
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
int main()
{
//Declare the variables used
float area, circumference, areaOfCircle, pi, diameter;
bool getNumber = true;
char letter;
int r;
pi = 3.14159265;
while (true) //Enable the program to loop
{
//Prompt the user to type in a letter and a number
cout <<"Enter A for Area, C for Circumference, D for Diameter, Q to Quit; Followed by the radius: " << endl;
cin.get(letter); //Input any letter for option
//Will terminate if Q is typed
if (letter == 'Q')
{
cout << "Terminating as requested." << endl;
return 0; //Stop
}
while(getNumber)
{
if (!(cin >> r)
{
cout <<"Please enter numbers only." << endl;
cin.clear();
cin.ignore(10000, '\n');
}
else if getNumber = false;
if(r > 0)
{
if(letter == 'A')
{
areaOfCircle = pi*r*r;
cout <<"The area of the circle is" << fixed << setprecision(5) << r << "is" << fixed << setprecision(5) << areaOfCircle << endl;
}
else if (letter == 'D')
{
diameter = 2*r;
cout <<"The diameter of a circle with a radius" << fixed << setprecision(5) << r << "is" << fixed << setprecision(5) << diameter << endl;
}
else if (letter == 'C')
{
circumference = 2*pi*r;
cout <<"The circumference of a circle with a radius" << fixed << setprecision(5) << r << "is" << fixed << setprecision(5) << circumference << endl;
}
The only real problems are syntax errors preventing it from compiling, and a couple logic errors preventing it from running correctly. I have fixed both in the following code, please see the comments I added explaining the problems.
#include <iostream>
#include <math.h>
#include <iomanip>
usingnamespace std;
int main()
{
//Declare the variables used
float area, circumference, areaOfCircle, pi, diameter;
int r;
pi = 3.14159265;
while (true) //Enable the program to loop
{
char letter;
bool getNumber = true;//<---- moved into loop to re-initialize true,
// or the while(getNumber) loop only runs once
//Prompt the user to type in a letter and a number
cout << "Enter A for Area, C for Circumference, D for Diameter, Q to Quit; Followed by the radius: " << endl;
cin >> letter;// cin.get(letter); //Input any letter for option
//Will terminate if Q is typed
if (letter == 'Q')
{
cout << "Terminating as requested." << endl;
return 0; //Stop
}
while (getNumber)
{
if (!(cin >> r))//<---- missing closing parenthesis
{
cout << "Please enter numbers only." << endl;
cin.clear();
cin.ignore(10000, '\n');
}
else getNumber = false;//<----- else if with no condition
if (r > 0)
{
if (letter == 'A')
{
areaOfCircle = pi*r*r;
cout << "The area of the circle is" << fixed << setprecision(5) << r << "is" << fixed << setprecision(5) << areaOfCircle << endl;
}
elseif (letter == 'D')
{
diameter = 2 * r;
cout << "The diameter of a circle with a radius" << fixed << setprecision(5) << r << "is" << fixed << setprecision(5) << diameter << endl;
}
elseif (letter == 'C')
{
circumference = 2 * pi*r;
cout << "The circumference of a circle with a radius" << fixed << setprecision(5) << r << "is" << fixed << setprecision(5) << circumference << endl;
}
else
{
cout << "No calculation performed. Invalid letter." << endl << endl;
}
}
else
{
cout << "No calculation performed. Radius must be positive." << endl;
}
}
}
}//<----- no closing brace
Edit:
If you have any questions about my changes feel free to ask. I should also mention, questions like this should probably go in the beginners or general forum, you will most likely get more help there in the future.