Corning Community College
CSCS1320 C/C++ Programming
======Project: PROCESS IMPLEMENTATION - GRADE FIGURE-OUTERER (gfo0)======
=====Errata=====
* any updates/fixes will appear here
=====Objective=====
To implement a programmatic solution (ie simulation) of a real life process- the obtaining, processing, and display of your status in the course.
=====Prerequisites/Corequisites=====
In addition to the new skills required on previous projects, to successfully accomplish/perform this project, the listed resources/experiences need to be consulted/achieved:
* you can calculate percentages
* ability to open and access data from files
* using loops to automate a process
=====Background=====
Throughout the semester, you've been accumulating points for your class participation, journal, and projects.
This information has been accessible via the **status** tool.
=====Program=====
Throughout the semester, your class-related activities have been numerically captured and made available to you via the **status** tool.
Now that we are nearing the end, and your programming skillset is significantly expanded, I would like you to write a program to take this data and calculate your grade (reflective of currently recorded data).
The **status** tool has an option that will take all your **status** data and 'flatten' it... converting all the necessary data into one stream of values. To obtain this data, simply run the **status** tool, providing your course desig, as well as the **flatten** argument and the file **DESIG.status.flat** will be created in your current working directory.
For example:
lab46:~/src/cprog/gfo0$ status cprog flatten
lab46:~/src/cprog/gfo0$ ls
cprog.status.flat
lab46:~/src/cprog/gfo0$ cat cprog.status.flat
-1 7 8 7 8 6 8 2 8 0 8 0 8 8 8 1 0 -2 4 4 8 8 11 12 13 16 19 20 24 24 100 0 0 26 24 28 -3 32 39 42 52 32 52 51 52 46 52 52 52 73 78 24 0 -4
lab46:~/src/cprog/gfo0$
Your program needs to do the following:
* check for and open the **cprog.status.flat** file
* if error occurs, display message and exit
* reading one integer at a time, load the values into an array according to their category
* there will be three categories (arrays), each one identified by a header/sentinel value:
* -1 indicates the start of journal data (13% of grade)
* -2 indicates end of journal data / start of participation data (13% of grade)
* -3 indicates end of participation data / start of project data (52% of grade)
* -4 indicates end of project data (and end of data stream)
* once loaded into their arrays, calculate their totals, and totals out of grade component
* tally up all three, and print out the results
* calculate the current overall score, with a precision of 3 decimal places
* display the letter grade
Letter grades are on the following scale:
* A (100.00+)
* A- (94.00-99.99)
* B+ (88.00-93.99)
* B (82.00-87.99)
* B- (76.00-81.99)
* C+ (70.00-75.99)
* C (64.00-69.99)
* D (58.00-63.99)
* F ( 0.00-57.99)
Final program output should resemble the following (note the formatting/spacing):
lab46:~/src/cprog/gfo0$ ./gfo0
Participation: 6 / 12 => 6 / 13
Journal: 38+1 / 56 => 9 / 13
Projects: 328+24 /377 => 48 / 52
-------------------------------------
Total: 63 / 78
=====================================
Score: 80.769
Grade: B-
lab46:~/src/cprog/gfo0$
=====Submission=====
To successfully complete this project, the following criteria must be met:
* Code must compile cleanly (no warnings or errors)
* Use the **-Wall** and **-std=c99** flags when compiling.
* Output must be correct, and resemble the form given in the sample output above.
* Code must be nicely and consistently indented (you may use the **indent** tool)
* Code must utilize the algorithm/equations presented above
* Code must be commented
* Track/version the source code in a repository
* Submit a copy of your source code to me using the **submit** tool.
To submit this program to me using the **submit** tool, run the following command at your lab46 prompt:
$ submit cprog gfo0 gfo0.c
Submitting cprog project "gfo0":
-> gfo0.c(OK)
SUCCESSFULLY SUBMITTED
You should get some sort of confirmation indicating successful submission if all went according to plan. If not, check for typos and or locational mismatches.
What I will be looking for:
78:gfo0:final tally of results (78/78)
*:gfo0:gfo0.c submit via submit tool [4/4]
*:gfo0:gfo0.c no negative compiler messages [4/4]
*:gfo0:gfo0.c is pushed to lab46 repository [5/5]
*:gfo0:gfo0.c implements specified algorithms [13/13]
*:gfo0:gfo0.c uses loops, arrays, and file operations [13/13]
*:gfo0:gfo0.c adequate indentation and comments [13/13]
*:gfo0:gfo0.c output conforms to specifications [13/13]
*:gfo0:gfo0.c values displayed in output are correct [13/13]