Hello. The function square() in my program is returning a "0"

after each time it is called. I understand why it is doing it,

but I don't know how to tell it that I don't want it to do it.

For example this is what the output looks like:

x = 1, a = 3

Y is equal to 1.75

Y is equal to 1.73214

Y is equal to 1.73205

Y is equal to 1.73205

0

.... on and on, for each value of x and a that I have assigned.

What I don't want is that 0 at the bottom.

What the program does is it uses a divide and average

algorithm to find the square of a number.

I like what I have so far

but I am wondering if I used the wrong kind of loop for the problem at hand.

The reason I chose to do it this way is because

using the cout statements like I did is the way I

am most familiar with to get values to the program

without having to manually enter them.

And the only way I know how to do it that way is by using a function to assign the values to.

Essentially I have two questions:

1. Can that 0 be gotten rid of, or atleast put some

meaningful data in its place....

or 2. Am I just plain going about this the wrong way?

Code:

#include <iostream>

#include <cmath>

using namespace std;

double x; // initial approximation

double a; // number that I am looking for the square root of.

double y; // answer

double g; // x - a/x

const double errorAllow = 1.0e-5; // this is the control number to stop the while loop.

double square(double x, double a); // function to do the actual number munching.

int main()

{

cout << square(1.0, 3.0) << "\n"; // give the program some numbers to play with

cout << square(10.0, 3.0) << "\n"; // However, this style has an unwanted behavior

cout << square(0.01, 3.0) << "\n"; // of displaying a zero after each loop is

cout << square(100.0, 3.0) << "\n"; // completed.

cout << square(1.0, 4.0) << "\n";

cout << square(2.0, 4.0) << "\n";

}

double square(double x, double a)

{

cout << "x = " << x << ", a = " << a << "\n"; // lets the user know what numbers are being used.

y = (x + a/x) / 2; // init a value for x,y, and g for the while loop to work with.

x = y;

g = x - a/x;

if (g == 0)

cout << "x is a perfect square of a!\n";

while (g >= errorAllow)

{

x = y;

y = (x + a/x) / 2;

g = x - a/x;

cout << "Y is equal to " << y << "\n";

//return x,y; // NOT BEING VERY USEFUL!

}

return 0;

}

/* this code was to manually enter in values for x and a

** for debugging, I moved it here to get it out of my way */

/* cout << "Enter a value for x: " << x <<"\n";

cin >> x;

cout << "\nEnter a value for a: " << a <<;

cin >> a; */