I have been trying to figure this out for a long time now. My program compiles but i keep getting the incorrect answer. Here are the instructions:

Write a function called SquareRoot that takes in a single parameter (type double) and returns an approximated square root (also a double), using the following calculation process:

The square root of a number, num can be approximated by repeatedly performing a calculation using the following formula:

nextGuess = (lastGuess + (num / lastGuess)) / 2

When nextGuess and lastGuess are almost identical, nextGuess is the approximated square root. You can start the initial guess (i.e. the first value of lastGuess at 1.0, for the first computation. Once the difference between nextGuess and lastGuess is less than a small number (use the value 0.0001), you may claim that nextGuess is the approximated square root of num. Format your square root result to 5 fixed places after the decimal point. Original value entered by user should be printed in the default format. (You may NOT use the square root function in the math library -- the point of this exercise is to write your own function).

To test this function, write a main() routine that prompts the user and lets them enter a number (of type double), then passes the number into your square root function and prints out the returned value.

Sample run 1: (user input underlined)

Input Number: 123

square root of 123 = 11.09054

Here is my code :

Code:

#include <iostream>

using namespace std;

double squareroot (double num1);

int main()

{

double num1;

cout << "Enter a value " ;

cin >> num1;

double sqt = squareroot (num1);

cout << "The square root of : " << sqt << endl;

return 0;

}

double squareroot(double num1)

{

double lastGuess = 1.0;

double nextGuess;

nextGuess = (lastGuess + (num1 / lastGuess))/2.0;

while(!( (nextGuess <= (lastGuess + 0.0001)) && (nextGuess >= (lastGuess - 0.00001))) )

{

nextGuess = (lastGuess + (num1 / lastGuess))/2.0;

num1 =nextGuess;

}

return nextGuess;

}

The output keeps coming out as 1.000008.....i assumed that the values are not getting passed from the main function. Please assist. Thank You.