Troubleshooting C++ Circle Area Calculation

Click For Summary

Discussion Overview

The discussion revolves around troubleshooting a C++ program intended to calculate the area and circumference of a circle, as well as addressing issues in a subsequent program related to trigonometric functions. Participants explore coding errors, suggest corrections, and share programming concepts.

Discussion Character

  • Technical explanation
  • Debate/contested
  • Homework-related

Main Points Raised

  • Initial code contains multiple syntax errors, such as missing semicolons and incorrect variable types for pi and radius.
  • Some participants point out that using 'int' for pi limits its precision, suggesting 'double' instead.
  • There is a discussion about the order of operations, specifically that the radius should be squared after user input is received.
  • One participant highlights a hanging '<<' in the circumference output line, which leads to confusion.
  • Another participant mentions the need for proper variable declarations and the importance of ensuring that variables have values before comparison.
  • Participants suggest using loops to validate user input for the hypotenuse in a trigonometric context.
  • There is a suggestion to improve the precision of pi by using a mathematical function rather than a fixed value.

Areas of Agreement / Disagreement

Participants generally agree on the need for corrections in the initial C++ code, but there are multiple suggestions for how to address the issues, indicating a lack of consensus on the best approach. The discussion about trigonometric functions also reveals differing opinions on how to handle input validation.

Contextual Notes

Limitations include unresolved syntax errors in the provided code snippets, assumptions about variable types, and the need for proper input validation that has not been fully implemented.

Who May Find This Useful

Individuals learning C++ programming, particularly those interested in mathematical calculations and input validation techniques.

JamesU
Gold Member
Messages
828
Reaction score
3
What's wrong with this C++ project I'm working on? it's supposed to find the area of a circle:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int pi = 3.14
int rad
int radsqr = rad*rad
count << "radius of the circle:" <<
cin >> rad
count >> "The radius of the circle is about:" << radsqr*pi << end1;

system("PAUSE");
return EXIT_SUCCESS;
}
 
Technology news on Phys.org
It's been a while since I've done programming, but looking at it quickly, I just notice that you said int pi =3.14, but int only stores integers so your really saying int pi =3 . This may not be the only problem, but its the one that I see.
 
Ahh what a mess! Try this:

Code:
double pi = 3.14 ;
double rad ;
cout << "radius of the circle:" ;
cin >> rad ;
cout << "The radius of the circle is about:" << rad*rad*pi << endl ;
 
Last edited:
oh, I meant 'the area of the circle is about:'

but thanks.
 
Oh, and you square rad before it gets the input from the user. That means that since rad starts out as random garbage before you give it a value, radsqr is random garbage squared. You have to square it after the line that says cin<<... to get what you want. So if you make that change and change the int's to float's it should work.
 
grrr...Now I can't get the circumference to show up:
Code:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{

double pi = 3.14 ;
int rad ;
cout << "radius of the circle:" ;
cin >> rad ;
cout << "The area of the circle is about:" << rad*rad*pi << endl;
cout << "The circumference of the circle is about:" << rad*2*pi <<
    system("PAUSE");
    return EXIT_SUCCESS;
}
it only displays the area
 
Actually you probably want rad to be double too since you can have decimal values.

Why do you have a hanging << at the end of the circumference line? Dont' forget the endl;
 
it says:

stupid dev C++ said:
`end1' is undeclared (first use this function)
 
It's endl, not end1(end-lowercase L, not end-one)
 
  • #10
Its the letter "L", but lower case. Not the number "1"
 
  • #11
oh, I'm stupid. It's the font on my compiler that's confusing me
 
  • #12
my formula calculation is complete:

Radius of the circle: 3
The area of the circle is about: 28.26
The circumference of the circle is about: 18.84
The diameter of the circle is: 6

muahaha :devil:
 
  • #13
Congrats! Now try something more difficult like calculate pascal's triangle.
 
  • #14
I'll work my way up.

what was pascal's triangle? the 3/4/5 one? in trig?
 
  • #15
aha! basic trig :cool:

Code:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
double hyp
double opp
double adj
cout << "Input sides of a right triangle
cout << "Hypotenuse:" << endl;
cin >> hyp
cout << "opposite" << endl;
cin >> opp
cout << "adjacent" << endl;
cin >> adj
cout << "Triangle's properties are:" << endl;
cout << "Sine:" adj/hyp " Cosine:" opp/hyp " Tangent:" opp/adj
system("PAUSE");
return EXIT_SUCCESS;
}
 
  • #17
unfortunately, I do not understand that :frown:

The flaw in my trig program is that anyone can put the hypotenuse as a smaller length than the opposite or adjacent sides. could I do an if statement that if this happens, function main() will execute again?
 
  • #18
Or you could just have a loop that continues to ask for the hypotenuse until it is an accepatable value.
 
  • #19
something like?

for ((hyp<opp)||(hyp<adj))
{
cin >> hyp
}
 
  • #20
A do while loop would be appropriate:

do {
cin >> hyp ;
} while ( (hyp < opp) || (hyp<adj) ) ;
 
  • #21
okay, and where would I put it in the code? right after sin cos and adj are specified, right?
 
  • #22
Well, in order to compare hyp you need to know the value of opp and adj, so after you get those to values then you can stick the above code in.

Programming is a logical process. Whatever the flow of the code, it has to make sense. You can't just be comparing variables that don't have any specified value.
 
  • #23
now it says that there should be a semicolon before the variable declaration, like:

;double

and it says that on that same line, there's a missing terminating character.

Code:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
double hyp
double opp
double adj
cout << "Input sides of a right triangle
cout << "Hypotenuse:" << endl;
cin >> hyp
cout << "opposite" << endl;
cin >> opp
cout << "adjacent" << endl;
cin >> adj
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
double hyp
double opp
double adj
cout << "Input sides of a right triangle
cout << "Hypotenuse:" << endl;
cin >> hyp
cout << "opposite" << endl;
cin >> opp
cout << "adjacent" << endl;
cin >> adj
cout << "Triangle's properties are:" << endl;
cout << "Sine:" adj/hyp " Cosine:" opp/hyp " Tangent:" opp/adj
system("PAUSE");
return EXIT_SUCCESS;
}
cout << "Triangle's properties are:" << endl;
cout << "Sine:" adj/hyp " Cosine:" opp/hyp " Tangent:" opp/adj
system("PAUSE");
return EXIT_SUCCESS;
}
 
  • #24
In order to get a better precision in your pi-value than 3.14, a common strategy is to define your pi as follows:

double pi=4*atan(1);

Where atan is the arcus-tangent function.
If your machine doesn't accept "atan()", try arctan() instead.
 
  • #25
can anyone help with my trig functions?
 

Similar threads

  • · Replies 40 ·
2
Replies
40
Views
4K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 39 ·
2
Replies
39
Views
5K
Replies
12
Views
3K
  • · Replies 118 ·
4
Replies
118
Views
10K
  • · Replies 30 ·
2
Replies
30
Views
5K
  • · Replies 25 ·
Replies
25
Views
3K
  • · Replies 17 ·
Replies
17
Views
2K
  • · Replies 6 ·
Replies
6
Views
13K
Replies
12
Views
2K