[Beginner] Incorrect Output for a Simple Code
 CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com

# Thread: [Beginner] Incorrect Output for a Simple Code

1. Junior Member
Join Date
Sep 2012
Posts
3

## [Beginner] Incorrect Output for a Simple Code

The program prompts for 3 circles' center coordinates and their radii.
The program then prompts for a point which is then evaluated for inclusion/exclusion in the three circles' areas.

Code:
```#include <iostream>
#include <cmath>
using namespace std;

int main()
{
// Variable declarations
double x1;                 // x coordinate circle A
double y1;                 // y coordinate circle A
double x2;                 // x coordinate circle B
double y2;                 // y coordinate circle B
double x3;                 // x coordinate circle C
double y3;                 // y coordinate circle B
double r1;                 // radii circle A
double r2;                 // radii circle B
double r3;                 // radii circle C
double X;                  // query x coordinate
double Y;                  // query y coordinate
double dx1 = X - x1;         // x distance between query and circle A
double dy1 = Y - y1;         // y distance between query and circle A
double dx2 = X - x2;         // x distance between query and circle B
double dy2 = Y - y2;         // y distance between query and circle B
double dx3 = X - x3;         // x distance between query and circle C
double dy3 = Y - y3;         // y distance between query and circle C
bool c1;                   // query point in circle A y/n
bool c2;                   // query point in circle B y/n
bool c3;                   // query point in circle C y/n

// Prompt and read in circle A center coordinates
cout << "Enter x and y coordinates of circle A (2 values): ";
cin >> x1;
cin >> y1;

cout << "Enter radius of circle A: ";
cin >> r1;

// Prompt and read in circle B center coordinates
cout << "Enter x and y coordinates of circle B (2 values): ";
cin >> x2;
cin >> y2;

cout << "Enter radius of circle B: ";
cin >> r2;

// Prompt and read in circle C center coordinates
cout << "Enter x and y coordinates of circle C (2 values): ";
cin >> x3;
cin >> y3;

cout << "Enter radius of circle C: ";
cin >> r3;

// Prompt and read in query point
cout << "Enter x and y coordinates of query point (2 values): ";
cin >> X;
cin >> Y;

// Determine location of query point relative to the circles
if ((dx1*dx1)+(dy1*dy1) <= (r1*r1)) {
c1 = 1;
}
else {
c1 = 0;
}
if ((dx2*dx2)+(dy2*dy2) <= (r2*r2)) {
c2 = 1;
}
else {
c2 = 0;
}
if ((dx3*dx3)+(dy3*dy3) <= (r3*r3)) {
c3 = 1;
}
else {
c3 = 0;
}

// Determine whether circles contain query point
if (c1 == 0 && c2 == 0 && c3 == 0) {
cout << "No circle contains point (" << X << "," << Y << ")." ;
}
else if (c1 == 1 && c2 == 0 && c3 == 0) {
cout << "Circle A contains point (" << X << "," << Y << ")." ;
}
else if (c1 == 0 && c2 == 1 && c3 == 0) {
cout << "Circle B contains point (" << X << "," << Y << ")." ;
}
else if (c1 == 0 && c2 == 0 && c3 == 1) {
cout << "Circle C contains point (" << X << "," << Y << ")." ;
}
else if (c1 == 1 && c2 == 1 && c3 == 0) {
cout << "Circles A and B contain point (" << X << "," << Y << ")." ;
}
else if (c1 == 1 && c2 == 0 && c3 == 1) {
cout << "Circles A and C contain point (" << X << "," << Y << ")." ;
}
else if (c1 == 0 && c2 == 1 && c3 == 1) {
cout << "Circles B and C contain point (" << X << "," << Y << ")." ;
}
else cout << "Circles A, B and C contain point (" << X << "," << Y << ")." ;
}```
For circles A(0,0) r=5, B(0,0) r=5, C(0,0) r=5, Point (-10,-10), I somehow get the output "Circles A, B, and C contain point (-10,-10). This happens for all values I have tried, whether it is a valid output statement or not. What am I doing wrong?

2. Senior Member
Join Date
May 2001
Location
Germany
Posts
1,144

## Re: [Beginner] Incorrect Output for a Simple Code

If all of the comparisons fail, your last else-statement is entered and that is the output you get.
Looking at your logic I assume that you are missing a comparison for c1, c2 and c3 == 1. If you add that and change your last else-statement to output something like "no circle contains point ..." you should be alright.

3. Elite Member Power Poster
Join Date
Aug 2000
Location
West Virginia
Posts
7,712

## Re: [Beginner] Incorrect Output for a Simple Code

Look at the location in your code of these statements:
Code:
```  double dx1 = X - x1;         // x distance between query and circle A
double dy1 = Y - y1;         // y distance between query and circle A
double dx2 = X - x2;         // x distance between query and circle B
double dy2 = Y - y2;         // y distance between query and circle B
double dx3 = X - x3;         // x distance between query and circle C
double dy3 = Y - y3;         // y distance between query and circle C```
The variables on the right hand side of those statements have not been
given values yet.

4. ## Re: [Beginner] Incorrect Output for a Simple Code

Originally Posted by Gr33nMachine
Code:
```int main()
{
// Variable declarations
double x1;                 // x coordinate circle A
double y1;                 // y coordinate circle A
double x2;                 // x coordinate circle B
double y2;                 // y coordinate circle B
double x3;                 // x coordinate circle C
double y3;                 // y coordinate circle B
double r1;                 // radii circle A
double r2;                 // radii circle B
double r3;                 // radii circle C
double X;                  // query x coordinate
double Y;                  // query y coordinate
double dx1 = X - x1;         // x distance between query and circle A
double dy1 = Y - y1;         // y distance between query and circle A
double dx2 = X - x2;         // x distance between query and circle B
double dy2 = Y - y2;         // y distance between query and circle B
double dx3 = X - x3;         // x distance between query and circle C
double dy3 = Y - y3;         // y distance between query and circle C```
Did you step through your code with the debugger?
What is the value of dx1 after these lines?
You don't assign to dx1 afterwards, so this value will be used in the comparisons in your if-else-tree.

C++ is not mathematics. You don't write equations in C++ code, you write assignments. "dx1 = X - x1;" means assign the result of the expression X - x1 to the variable dx1. That value isn't going to change afterwards if X or x1 change. The value of dx1 only changes when you assign to it.

5. Junior Member
Join Date
Sep 2012
Posts
3

## Re: [Beginner] Incorrect Output for a Simple Code

Ahh... I changed the variable declarations for dx1-3 until after they are prompted for and I'm getting the output I'm looking for, thanks.

#### Posting Permissions

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