CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com

# Thread: Issue with c++ code

1. Junior Member Join Date
Mar 2017
Posts
14

## Issue with c++ code

Hey! I am having issue with my code, the calculations and cout won't come out correct. Any help is much appreciated.
The following formula gives the distance between two points, (x1, y1) and (x2, y2) in the Cartesian plane:

(x2-x1)^2+(y2-y1)^2
Given the center and a point on the circle, you can use this formula to find the radius of the circle. Write a program that prompts the user to enter the center and a point on the circle. The program should then output the circles radius, diameter, circumference, and area. Your program must have at least the following function:

Code:
```//Preprocessor Directives
#include<iostream>
#include<cmath>
#include<iomanip>

//defining constants
#define sq 2
#define PI 3.1416

using namespace std;

//delclaring var
double distance(int x1, int x2, int y1, int y2);
double radius(int x1, int x2, int y1, int y2);
double circumference(int r);
double area(int r);

a. distance: This function takes as its parameters four numbers that represent two points in the plane and returns the distance between them.
b. Radius: This function takes as its parameters four numbers that represent the center and a point on the circle, calls the function distance to find the radius of the circle, and returns the circles radius.

c. Circumference: This function takes as its parameter a number that represents the radius of the circle and returns the circles circumference. (If r is the radius, the circumference is 2pr.)
d. Area: This function takes as its parameter a number that represents the radius of the circle and returns the circles area. (If r is the radius, the area is PIr^2.)
Assume that p = 3.1416.

//making calc
double distance(int x1, int x2, int y1, int y2)
{
return sqrt(pow(x2 - x1, sq) + pow(y2 - y1, sq));
}

double radius(int x1, int x2, int y1, int y2)
{
return distance(x1, x2, y1, y2);
}

double circumference(int r)
{
return sq * PI * r;
}

double area(int r)
{
return PI * pow(r, sq);
}

// main function
int main()
{
int x1, y1, x2, y2;
cout << "Enter x and y cordinates of center of circle: " << endl;
cin >> x1 >> y1;

cout << "Enter x and y cordinates of a point of the circle: "<< endl;
cin >> x2 >> y2;

double c = circumference(r);

double a = area(r);

//out put to user

cout << "\nRadius of circle: " << r;

cout << "\nDiameter of circle: "  << r;

cout << "\nCircumference of circle: " << c;

cout << "\nArea of circle: " << a;

system("pause");
// exit main
return 0;
}```  Reply With Quote

2. ## Re: Issue with c++ code

Note that you are using SQ (defined as 2) for 2 different reasons - as a power and as a multiplier of 2. It would be better if these different uses had different names.

Also in c++ it is good practice to use a const int rather than a define for constants eg
Code:
```const int sq = 2;
const double pi = 3.1416;```
For circumference() and area(), the parameter should be of type double, not type int - as given the co-ords of the centre and a point on the circ, the radius may not be a whole number!

Also, the diameter of a circle is twice the radius - not equal!  Reply With Quote

3. Member +  Join Date
Feb 2017
Posts
544

## Re: Issue with c++ code Originally Posted by 2kaud Note that you are using SQ (defined as 2) for 2 different reasons - as a power and as a multiplier of 2. It would be better if these different uses had different names.
The problem still remains because the power of SC is semantically different in every formula where it is used. To resolve this one would have to introduce a different SC for each occurrence. This shows that SC really does not qualify as a global constant, it is inherently local in nature.

Compare: Say you have two arrays in different parts of your program and the only thing they have in common is the same size 10. Should you then make 10 a global constant and use it to define both? No, because the two 10 are unrelated and only have local meaning (where they still can be defined as constants of course).

So for this reason I think pow(x,2) is better then pow(x,SC) where SC is a global constant. If SC on the other hand is locally defined (in a context where it keeps its semantic even if it were changed), that would be fine.

Finally for the sake of convenience and code readability I suggest pow(x, 2) is replaced with a square function, like

Code:
```double sqr(double x) {
return std::pow(x,2);
}```
or even,
Code:
```double sqr(double x) {
return x*x;
}```
Last edited by wolle; March 31st, 2017 at 02:31 AM.  Reply With Quote

c++, calculate, output #### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
• 