Notes on Computer Project #5 ---------------------------- Comments about the assignment and responses to frequently asked questions will be added to this file as necessary. ***** comments added on 02/07/12 ***** 1) Please note the following statement from the project handout: The deliverables for this assignment include the following: proj05.makefile -- your makefile which produces "proj05" proj05.*.cpp -- the source code file(s) for your solution proj05.*.h -- the interface file(s) for your solution Be sure to use the specified file names, and to submit your files for grading via the "handin" program. Note the use of the wildcard character '*' in the file names above -- you will replace the '*' with characters which you select. For example, if your solution is divided into two source code files and an interface file, you might choose to use file names such as: proj05.driver.cpp proj05.support.cpp proj05.support.h The specific file organization that you use is your decision: you'll submit one or more source code files, as well as zero or more interface files. 2) As stated on the assignment handout, you are required to create a makefile which controls the translation of your program, and the name of your executable file must be "proj05" (not "proj05.exe" or any other variation). 3) Please note the following statement from the project handout: The focus of this project is on the use of records and arrays, rather than more complex data structures. You may not use any of the containers from the Standard Template Library, such as the Vector class template. That is, you must use low-level data structuring mechanisms in your program (records and arrays). 4) Please note that the program will accept input from the standard input stream ("cin"). However, you will use command-line redirection to connect a file to that input stream, rather than the keyboard. An example (from the project handout): proj05 < data_file Thus, your program will not prompt the user to enter the name of a data file, nor will it prompt the user to enter the data items themselves. 5) Please note the following statement from the project handout: The program will perform appropriate error checking: if the data set is not valid, the program will display an appropriate message and halt. A data set is not valid if it contains an invalid number of student records, or if any of the student identification numbers are invalid. As noted on the project handout, you may make certain simplifying assumptions about the format and contents of a data set: a) If the data set contains between 1 and 20 student records, you may assume that the data set contains the correct number of student records for that particular course. b) For each student, you may assume that the student's identification number is present in the data set as an unsigned integer value, along with four integer values representing quiz scores. However, your program should check for other kinds of errors. For example, the data set may contain an invalid number of student records. Or, a data set might contain invalid student identification numbers or invalid quiz scores. 6) The formulas used in this project are the population variance and standard deviation (not the sample variance and standard deviation). That is, the calculations are based on the entire population of a data set, not just a random sample. Consider the following data set: {1, 2, 3, 4, 5, 6}. The average (arithmetic mean) of that data set is: (1 + 2 + 3 + 4 + 5 + 6) / 6 = 3.5 The variance of that data set is: [(1-3.5)^2 + (2-3.5)^2 + (3-3.5)^2 + (4-3.5)^2 + (5-3.5)^2 + (6-3.5)^2] / 6 = [6.25 + 2.25 + 0.25 + 0.25 + 2.25 + 6.25] / 6 = 2.92 (approximately) The standard deviation of that data set is: square root of 2.92 = 1.71 (approximately) Note that N, the number of elements in the population, is used in the calculations. ***** comments added on 02/21/12 ***** 7) I have posted two files, both of which contain valid data sets: /user/cse232/Projects/project05.data1 /user/cse232/Projects/project05.data2 As part of the process of developing your project solution, you should create other files which test various aspects of your program. Be sure to create files which test your logic to handle invalid data sets. --M. McCullen