Additional explanation:
This project will involve you creating a software floating point system for the MLKY programming language.

Follow the directions in P1_Documentation.pdf.  The starting code is provided for you in project1_handout.tar; this code will compile on Zeus and the supporting program will only run on Zeus.  This will untar to provide a Handout directory.

Your project will involve modifying only fp_functs.c to provide an implementation for the four listed functions.  You may create additional functions as needed.  You will only get credit for the addition and multiplication functions if you use the addition and multiplication techniques covered in class.

There is a rubric associated with this project on Blackboard that will let you see what areas are examined for the first 20 points (Code and Comments).  Additionally, 80 points will be assigned based on unit testing of your code by the GTAs.

You will only submit fp_functs.c to this Blackboard assignment for credit, no other files may be modified.

Changelog:

        [Feb 17, 5:30pm] You may NOT use any math.h functions

o    This includes pow()

o    Part of the learning objectives for this course involve encoding and decoding multiple data types from a memory location.

o    Some of the functions in math.h allow you to bypass this by doing the work for you.  No math.h functions may be used.

o    The Project Documentation was just updated to reflect this and Piazza’s Clarification thread also has this note.

Write a program that does the following in order:

Displays a welcome message to the user, and then asks them for the following information in order:
Homework grades for homeworks 1-7, recitation grades for recitations 1-6, test 1, test 2, and final exam. (See sample runs). This will feel a little tedious with a lot of cout, cin, cout, cin, but it’s necessary here, for now.
Then, ask the user if they earned any extra credit. They should enter y for yes, or n for no. Allow BOTH UPPERCASE and LOWERCASE Y/y or N/n here. If the user enters an invalid character, the program should end. If the user enters a valid character and it’s y for yes, ask them for how many extra credit points they’ve earned and add it to their overall homework points. If no, don’t prompt user for ex. credit points and no extra credit is added to the overall homework points.
The following formulas should help with your calculations:

Homework Average = ((Add All Hws, recitations, and ex credit))/820) * 100

Test Average = ((Midterm I * 17.5) + (Midterm II * 17.5) + (final * 25)) / 60

Course Average = ((Midterm I * .175) + (Midterm II * .175) + (final * .25) + (Homework Avg * .40))

Calculate and display the user’s homework average, their test average, and their final course percentage. Print these values out to two decimal places.
When printing the test average, if their test average falls below 69% (the required test average to pass the course), print
***Test average requirement not met***
after the average to alert the user. (See sample runs).
Use either a switch statement or an if/else if block to determine what letter grade the user earned based on their final course grade percentage. See the course syllabus for the letter grade breakdowns. To meet the minimum requirements for this assignment, you don’t have to handle + or – letter grades. Just printing the letter is fine. You can though, if you want to.
Error Checking: You may ASSUME that the user will enter valid homework scores, recitation grades (which are always 20,10 or 0) and test grades, however, you need to check for an invalid character entry on their extra credit input. If the user enters something other than Y, y, N, n, print an error message (See sample run 3) and do not continue on with the rest of the displaying of the grades. Just allow the program to abort (meaning, structure your code so that the program naturally flows to return 0; at the end of main().
Sample Runs
Below are some sample runs so you can see how your program should behave. Your formatting should match mine, EXACTLY. This means, spacing, prompts, wording, everything. (user input is underlined, to distinguish it from output)
Sample run 1
Welcome to the Grade Calculator!

HOMEWORK GRADES –> 99 95 100 105 65 97 100

RECITATION GRADES –> 20 20 10 0 20 20

TEST GRADES –>
Midterm I: 95
Midterm II: 85
Final: 100

Is there any extra credit to add in? (Y or N) –> N

Homework Average: 91.59%
Test Average: 94.17%
Course Average: 93.13%
Course Grade: A

Sample Run 2
Welcome to the Grade Calculator!

HOMEWORK GRADES –> 88 98 95 76 100 87 95

RECITATION GRADES –> 20 20 20 20 20 20

TEST GRADES –>
Midterm I: 51
Midterm II: 66
Final: 68

Is there any extra credit to add in? (Y or N) –> Y
How many extra credit points should be added? –> 10

Homework Average: 93.78%
Test Average: 62.46%  ***Test average requirement not met***
Course Average: 74.99%
Course Grade: C
Sample Run 3
Welcome to the Grade Calculator!

HOMEWORK GRADES –> 50 70 75 85 100 0 105

RECITATION GRADES –> 10 10 20 20 0 0

TEST GRADES –>
Midterm I: 50
Midterm II: 65
Final: 95

Is there any extra credit to add in? (Y or N) –> X

Invalid option, exiting program.