Write a complete C++ program to do the following:
1. The main program will read in a parameter value n (read this in main). Then it will call a function read2arrays (information given below) to read lists of grades in two arrays, which the main program will call test1 and test2 (or some other names of your choice).
2.
a) The main program will call a function isitavalidarray, sending the function the array test1 and n. The function (details below) will verify whether or not the values in this one array are applicable, sending an answer back to main.
b) The main program will call this function a second time, sending the test2 array and n.
c) (Back in main :) If one (or both) of the arrays is invalid, the main program will print an inaccuracy message to cout and skip the rest of the processing. If both arrays are valid, the main program will carry on with the rest of the processing (steps 3-7).
3.
a) The main program will call a function findrange, sending the function test1 and n. The function will verify the largest and smallest values in the first n elements of the test1 array and also how far apart they are, which means a positive value representing the difference between the largest and smallest value. The function will print to cout these three values together with appropriate messages (e.g., the largest element in the array is ..., the smallest element in the array is ..., they are ... apart).
b) The main program will do the same for the test2 array.
4. The main program will call a function sum2arrays, sending it the two arrays (test1 and test2) and n; there will also be a fourth parameter, an array called newvalues1. The function will keep values in newvalues1 array. More accurately, for each position, from 0 to n-1, in the newvalues1 array, the function will combine the elements in the two original test arrays at that position, storing the sum of the two elements in the corresponding element of the newvalues1 array.
For illustration, if the first elements in the two test arrays are 20 and 45, then the sum2arrays function will keep 65 in first element of newvalues1.
5. The main program will call a function subtract2arrays that will get the similar number of parameters as sum2arrays. But, this time the function will storethe differentiation of the two elements in a new array called newvalues2. For the example above, the function will store -25 in the first element of newvalues2.
6. The main program will call the findrange function two more times, to work on the two new arrays constructed in sum2arrays and subtract2arrays functions.
7. The main program will call one final function printresults to print all things out neatly to an output file. This function will print an entire heading, then column headings mentioning the two original test arrays and the two newly computed arrays. Underneath the column headings will be the actual values: first a test1 value, then a test2 value, then a newvalues1 value and finally a newvalues2 value.
Everything must print neatly under the column headings, with numbers right-aligned.
FUNCTION DETAILS:
The function read2arrays will read a set of data into two arrays. The function will get three parameters, two arrays of integers and an integer k giving size of these arrays. Each line of data will hold two values (for example, 5 12). The first data value (5) will be read in the first element of first array; the second data value (12) will be read in the first element of second array. Then the function will read second line of data having two data values and read them in the second element in every array, and so on. The function will also print the data values to cout neatly in two columns, arranged under column headings, as it reads them in.
The function isitavalidarray will have two parameters, an array p and a size m. It will verify whether or not each of the first m values in the p array is valid (in the range from 0 to 100). If any value is invalid, the function will print invalid grade to cout and send a special signal back to main.
The function findrange will have two parameters, an array p and a size m. It will discover and print to cout the largest and the smallest values in first m elements of the p array; it will also print how far apart they are. (Be sure to print messages with each of the values.)
The functions sum2arrays and subtract2arrays will each have as parameters three arrays of integers and a size k (see above).
The function printresults will get all four arrays and their common size as parameters.
It will print everything neatly, with number aligned on right in columns.
DATA: Run the program several (at least four) times—each time using a diverse input file. (The only thing that will have to change in the program is the name of the file mentioned in the ifstream statement.) The first three times, there must be at least one invalid entry in one of the arrays. Mix up that array has the invalid entries, covering all the various cases; include one set in which both arrays have invalid values.
Then use a data set that has all valid grades (include 0, include 100, include one-digit values, and include two-digit values).
Print each data file that is used by the program.
OUTPUT: Each part of the cout output (i.e. for each input file) should be clearly marked, with a heading explaining what it shows. Have at least 3-4 blank lines between parts.