1. Assigned: March 26, 2014 1 Due: April 13, 2014
HW 6: I/O and Arrays
Assigned on: March 26, 2014 Due on: April 13, 2014
(a) Compute the median of data ﬁle. The median is the number that has the same
number of data elements greater than the numbers as there are less than the number.
For purposes of this problem, you are to assume that the data is sorted (that is, is
in increasing order). The median is the middle element of the ﬁle if there are an
odd number of elements, or the average of the two middle elements if the ﬁle has an
even number of elements. You will need to open the ﬁle, count the members, close
the ﬁle and calculate the location of the middle of the ﬁle, open the ﬁle again (recall
the “start over” discussion in this chapter], count up to the ﬁle entries you need, and
calculate the middle.
While testing construct several ﬁles on your own, including one with an even number
of data points, increasing, and one with an odd number, also increasing.
When you are conﬁdent your program is correct, modify it to read data from a ﬁle
(b) For a sorted ﬁle, a quartile is one of three numbers: The ﬁrst has one fourth the
data values less than or equal to it, one-fourth the data values between the ﬁrst and
second numbers, one-fourth the data points between the second and the third, and
one-fourth above the third quartile. Find the three quartiles for the data ﬁle you used
for part a. Hint: You should recognize that having done part a you have one third
of your job done. (You have the second quartile already.) You also should recognize
that you have done almost all the work toward ﬁnding the other two quartiles as well.
Problem 2 Write a program that takes its input from a ﬁle of numbers of type double.
The program outputs to the screen the average and standard deviation of the numbers
in the ﬁle. The ﬁle contains nothing but numbers of type double separated by blanks
and/or line breaks. The standard deviation of a list of numbers n1, n2, n3, and so forth
is deﬁned as the square root of the average of the following numbers:
(n1 − a)2
, (n2 − a)2
, (n3 − a)2
and so forth
The number a is the average of the numbers n1, n2, n3, and so forth.
Your program should read input from a ﬁle called stdDev.
Hint: Write your program so that it ﬁrst reads the entire ﬁle and computes the average of
all the numbers, and then closes the ﬁle, then reopens the ﬁle and computes the standard
2. HW 6: I/O and Arrays
Assigned: March 26, 2014 2 Due: April 13, 2014
Problem 3 Write a program that merges the numbers in two ﬁles and writes all the
numbers into a third ﬁle. Your program takes input from two diﬀerent ﬁles and writes
its output to a third ﬁle. Each input ﬁle contains a list of numbers of type int in sorted
order from the smallest to the largest. After the program is run, the output ﬁle will
contain all the numbers in the two input ﬁles in one longer list in sorted order from
smallest to largest. Your program should deﬁne a function that is called with the two
input-ﬁle streams and the output-ﬁle stream as three arguments.
Your program needs to read input data from ﬁles merge1 and merge2 and write output
to ﬁle merged.
Problem 4 Hexadecimal numerals are integers written in base 16. The 16 digits used are
’0’ through ’9’ plus ’a’ for the “digit 10”, ’b’ for the “digit 11”, ’c’ for the “digit 12”,
’d’ for the “digit 13”, ’e’ for the “digit 14”, and ’f’ for the “digit 15”. For example, the
hexadecimal numeral d is the same as base 10 numeral 13 and the hexadecimal numeral
1d is the same as the base 10 numeral 29. Write a C++ program to perform addition
of two hexadecimal numerals each with up to 10 digits. if the result of the addition is
more than 10 digits long, then simply give the output message “Addition Overﬂow” and
not the result of the addition. Use arrays to store hexadecimal numerals as arrays of
characters. Include a loop to repeat this calculation for new numbers until the user says
she or he wants to end the program.
Problem 5 Write a function called delete_repeats that has a partially ﬁlled array of
characters as a formal parameter and that deletes all repeated letters from the array.
Since a partially ﬁlled array requires two arguments, the function will actually have two
formal parameters: an array parameter and a formal parameter of type int that gives
the number of array positions used. When a letter is deleted, the remaining letters are
moved forward to ﬁll in the gap. This will create empty positions at the end of the array
so that less of the array is used. Since the formal parameter is a partially ﬁlled array, a
second formal parameter of type int will tell how many array positions are ﬁlled. This
second formal parameter will be a call-by-reference parameter and will be changed to
show how much of the array is used after the repeated letters are deleted.
For example, consider the following code:
a = ’a’;
a[l] = ’b’;
a = ’a’;
a = ’c’;
int size = 4;
3. HW 6: I/O and Arrays
Assigned: March 26, 2014 3 Due: April 13, 2014
After this code is executed, the value of a is ’a’, the value of a is ’b’, the value of
a is ’c’, and the value of size is 3. (The value of a is no longer of any concern,
since the partially ﬁlled array no longer uses this indexed variable.)
You may assume that the partially ﬁlled array contains only lowercase letters. Embed
your function in a suitable test program.