# Thread: help writing a function definition

1. ## help writing a function definition

I have to write a square root function but I'm stuck on the definition. Can I have an example of a function definition dealing with math functions?

Here's the program:

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. (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:

Input Number: 123 //user input
square root of 123 = 11.0905

Code:
```#include <iostream>
using std::cout;
using std::cin;

double squareroot (double, double);

int main ()

{
double num;

cout << " Input Number : ";
cin >> num;

return 0;

}

double squareroot ( double x, double y)

{
double lastGuess;
double num;

double nextguess= (lastGuess + (num / lastGuess)) / 2;

}```

2. ## Re: help writing a function definition

Originally posted by jlmac2001
I have to write a square root function but I'm stuck on the definition. Can I have an example of a function definition dealing with math functions?

Here's the program:

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. (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:

Input Number: 123 //user input
square root of 123 = 11.0905

Code:
```#include <iostream>
using std::cout;
using std::cin;

double squareroot (double, double);

int main ()

{
double num;

cout << " Input Number : ";
cin >> num;

return 0;

}

double squareroot ( double x, double y)

{
double lastGuess;
double num;

double nextguess= (lastGuess + (num / lastGuess)) / 2;

}```
Solution
Code:
```int main()
{
double num;
cout << "Enter a value " ;
cin >> num;
cout << "The square root of : " << num << " is " <<
squareroot(num) << endl;

return 0;
}

double squareroot(double num)
{

double lastGuess = 1.0;
double nextguess = (lastGuess + (num / lastGuess))/2.0;

while(!( (nextguess <= (lastGuess + 0.0001)) && (nextGuess >= (lastGuess - 0.00001))) )
{
nextguess = (lastGuess + (num / lastGuess))/2.0;
}

return nextguess;
}```
Hey. I have not had time to read your problem completely.. and I am quite buzy in here.. doing my own work.... that solution that I have coded must be close to what you are looking for... not sure whether it will be a bug free solution.... all the best...