hw3 Fall2011
hw3 Fall2011
Your name, ID number, and section should be written as comments in your program.
Name your program file HW3-ID.cpp replacing ID by your student ID number.
Submit your program file on Moodle by the above deadline.
The <cmath> function sqrt(x) is used to calculate the exact square-root value of the number x such
that x is a non-negative real number. The square root value of x can also be estimated using the
following mathematical equation:
1
ln(x )
x e 2
Write a C++ program that calculates and writes to an output file the exact and estimated square
roots of a list of numbers. The list of numbers is either read from the keyboard, generated
randomly or read from an input file. The program displays to the user the following menu and
performs the corresponding tasks based on the user’s selection. The program should keep running
until the user enters ‘Q’ or ‘q’ from the options list.
K: Read the list of numbers from the keyboard
R: Generate the list of numbers randomly
F: Read the list of numbers from an input file
Q: Quit the program
If the user enters ‘K’ or ‘k’, the program should read a list of numbers terminated by Ctrl+z
from the keyboard.
If the user enters ‘R’ or ‘r’, the program should ask the user to specify how many numbers
to generate randomly and then generates that many random values. The generated
numbers MUST range between 5.000 and 20.000. For this purpose use the rand() function
to return values between 5000 and 20000 and divide them by 1000.
If the user enters ‘F’ or ‘f’, the program should read the list of numbers from an input file
which could be empty or contain any number of values given individually on separate lines.
The name of the input file is provided by the user at run-time.
For each of the 3 menu options K, R and F, the program should calculate the exact and
estimated square roots of the obtained list of numbers and write the results in an output
file called ‘square_roots.txt’. The program should ignore (skip) any negative values in the
list of numbers and do the calculations and display the results only for the non negative
values.
The output should be written to the output file in tabular format including, for each non
negative number x in the list, the number x itself, its exact root, its estimated root, and the
absolute value of the difference between the two roots. Format the x’s with 3 digits after
the decimal point and format the roots and the difference between them with 6 digits after
the decimal point.
BONUS (1 Mark): Display the maximum difference between the exact and the estimated
roots.
Page 1 of 2
Grading Sheet: COMP2002-Fall2002-HW3 0.0 ¼ ½ ¾ 1.0 1¼ 1½ 1¾ 2.0
Handling of looping.
Handling of files.
Handling of random number generation and
calculations
Total
BONUS
Page 2 of 2