C++ GPA program help (in Off-topic)


smallpau1 - Go Blues [Lower My Fees] October 24 2006 8:54 PM EDT

I honestly have been working on this for days, and ive tried everything i could think of to get the output to work correctly, it starts out by saying i made the program, then the user is asked to enter his/her first and last name so it returns correctly(works fine - although we dont even need it to return for anything). Then it asks for the users grade in the course and then credit hours, and to calculate GPA the user just enters anything but "A-D, F", but i cant get it to work, and i honestly do not know why, and my GPA doesnt even come out right when it does. I have the if statement right (or so i thought) to not calculate until grade != A-D, or F. Please help me out! ____________________________________________________
#include 
#include 
using namespace std;


void ProgrammerNote(void);
// displays the message "Programmed by ."

char ReadLetterGrade(string prompt);
// displays the prompt and reads a letter grade from the keyboard

double ReadCreditHours(string prompt);
// displays the prompt and reads the course credit hours from the 
// keyboard

string ReadName(string prompt);
// dipslays the prompt and reads the first and last names of the user
// from the keyboard. The first and last names are contatenated and the
// full name is returned.

double ComputeQualityPoints(double& letterGradeSum, double& creditHours);
// computes and returns the quality points for a given course.
// Quality points = point value of letter grade * credit hours

double ComputeGPA(double qualityPoints, double creditHours);
// computes and returns the gpa. gpa = quality points / credit hours

double pointsVal(char letterGrade, double& letterGradeSum);
// Gets the point value of the letter grade

void main(){
	char letterGrade, choice;
	double letterGradeSum, letterGradeNum, creditHours, qualityPoints, GPA = 0;
	string name;

	ProgrammerNote();
	do{
		name = ReadName("Enter student name [first last]: ");
		
		while (GPA == 0){
			letterGrade = ReadLetterGrade("Enter grade: [A-D, F]: ");
			
			if (letterGrade == 'A' || letterGrade == 'B' ||
				letterGrade == 'C' || letterGrade == 'D' || letterGrade == 'F'){

				letterGradeNum = pointsVal(letterGrade, letterGradeSum);

			
				creditHours = ReadCreditHours("Enter credit hours: [0.0]: ");
				creditHours += creditHours;	
			}

		
			else if (letterGrade != 'A' || letterGrade != 'B' ||
				letterGrade != 'C' || letterGrade != 'D' || letterGrade != 'F'){

				cout.setf(ios::fixed);
				cout.precision(5);
				
				qualityPoints = ComputeQualityPoints(letterGradeNum, creditHours);
				GPA = ComputeGPA(qualityPoints, creditHours);
				cout > choice;
	}while(choice == 'Y' || choice == 'y');
}

void ProgrammerNote(void){
	cout > letterGrade;

	if (letterGrade > creditHours;
	
	return (creditHours);
}

string ReadName(string prompt){
	string word, word2;

	cout > word >> word2;

	return (word + " " + word2);
}

// double ComputeQualityPoints(char letterGrade, double creditHours)
double ComputeQualityPoints(double& letterGradeSum, double& creditHours){
	double qualityPoint;

	qualityPoint = letterGradeSum * creditHours;
	return (qualityPoint);
}

double ComputeGPA(double qualityPoints, double creditHours){
	double GPA;

	GPA = qualityPoints / creditHours;

	return (GPA);
}

smallpau1 - Go Blues [Lower My Fees] October 24 2006 9:18 PM EDT

weird, it cut out half my program when i posted, ok these functions belong inbetween ProgrammerNote and ReadName functions, HTML wouldnt allow these for some reason...

get rid of the obvious spaces in the names...

char Read Letter Grade(string prompt){
char letter Grade;

cout << prompt;
cin >> letter Grade;

if (letter Grade <= 'a'){
letter Grade = 'A';
}
if (letter Grade <= 'b'){
letter Grade = 'B';
}
if (letter Grade <= 'c'){
letter Grade = 'C';
}
if (letter Grade <= 'd'){
letter Grade = 'D';
}
if (letter Grade <= 'f'){
letter Grade = 'F';
}

return (letter Grade);
}

double pointsVal(char letter Grade, double& letter Grade Sum){
double letter Grade Num;
/*switch (letter Grade){
case 'A': return 4.0; break;
case 'B': return 3.0; break;
case 'C': return 2.0; break;
case 'D': return 1.0; break;
case 'F': return 0.0; break;
default: break;
}
cout << endl << endl;


if (letter Grade == 'A'){
return 4.0;
}
if (letter Grade == 'B'){
return 3.0;
}
if (letter Grade == 'C'){
return 2.0;
}
if (letter Grade == 'D'){
return 1.0;
}
if (letter Grade == 'F'){
return 0.0;
}
*/

if (letter Grade == 'A'){
letter Grade Num = 4.0;
}
if (letter Grade == 'B'){
letter Grade Num = 3.0;
}
if (letter Grade == 'C'){
letter Grade Num = 2.0;
}
if (letter Grade == 'D'){
letter Grade Num = 1.0;
}
if (letter Grade == 'F'){
letter Grade Num = 0.0;
}
letter Grade Sum = letter Grade Sum + letter Grade;
return (letter Grade Num);
}

double Read Credit Hours(string prompt){
double credit Hours;

cout << prompt;
cin >> credit Hours;

return (credit Hours);
}

PoisoN October 24 2006 9:22 PM EDT

Too much compilation errors, sorry. The source was destroyed by CB.

smallpau1 - Go Blues [Lower My Fees] October 24 2006 9:32 PM EDT

It runs with no errors if its copy and pasted correctly, lol, if anyone really wants to help, i can email it

smallpau1 - Go Blues [Lower My Fees] October 24 2006 9:37 PM EDT

in the readletterGrade function, change it to this:
(STILL GETTING RID OF extra spaces in names)


char Read Letter Grade(string prompt){
char letter Grade;

cout << prompt;
cin >> letter Grade;

if (letter Grade == 'a'){
letter Grade = 'A';
}
if (letter Grade == 'b'){
letter Grade = 'B';
}
if (letter Grade == 'c'){
letter Grade = 'C';
}
if (letter Grade == 'd'){
letter Grade = 'D';
}
if (letter Grade == 'f'){
letter Grade = 'F';
}

return (letter Grade);
}

PoisoN October 24 2006 9:41 PM EDT

Please zip & upload it to a file hoster. The code can't be compiled, the way it is listed above.

smallpau1 - Go Blues [Lower My Fees] October 24 2006 9:47 PM EDT

Program3

PoisoN October 24 2006 10:22 PM EDT

Made some small fixes, is the result correct now? Sorry, I don't know the exact algorithm details. Programmed by Paul Jones Enter student name [first last]: M K Enter grade: [A-D, F]: A Enter credit hours: [0.0]: 5 Enter grade: [A-D, F]: X letterGradeNum: 4.00000 creditHours: 5.00000 qualityPoints: 20.00000 GPA: 4.00000 // Quality points = point value of letter grade * credit hours // computes and returns the gpa. gpa = quality points / credit hours -> Both ok.

PoisoN October 24 2006 10:24 PM EDT

Programmed by Paul Jones
Enter student name [first last]: M K
Enter grade: [A-D, F]: A
Enter credit hours: [0.0]: 5
Enter grade: [A-D, F]: X
letterGradeNum: 4.00000
creditHours: 5.00000
qualityPoints: 20.00000
GPA: 4.00000

smallpau1 - Go Blues [Lower My Fees] October 24 2006 10:29 PM EDT

believe so, kinda hard to read, lol, but it looks correct goes A = 4.0, B = 3.0, C = 2.0, D = 1.0, F = 0.0.

So one output would be....

Grade: A
Hours: 3.0
Grade: B
Hours: 3.0
Grade: A
Hours: 3.0
Grade: *

GPA: 3.667

PoisoN October 24 2006 11:10 PM EDT

Fixed your problem, but not the whole code. Result:

Programmed by Paul Jones
Enter student name [first last]: p j
Enter grade: [A-D, F]: A
Enter credit hours: [0.0]: 3
Enter grade: [A-D, F]: B
Enter credit hours: [0.0]: 3
Enter grade: [A-D, F]: A
Enter credit hours: [0.0]: 3
Enter grade: [A-D, F]: x
GPA: 3.66667


1. Initialize your double variables(all!) with 0.0 (initialize every variable)
2. code in your if loop:

letterGradeNum = pointsVal(letterGrade, letterGradeSum);
double tempHours = ReadCreditHours("Enter credit hours: [0.0]:");
letterGradeSum += letterGradeNum * tempHours;
creditHours += tempHours;

3. code in your else if loop:

GPA = letterGradeSum / creditHours;
cout GPA (line is messed up by cb)

4. Clean up your code. You may put everything into new functions(each new method = new minor slowdown), but it is not necessary. Delete obsolete variables. Or rename those I reassigned. ;-) ... (too lazy for other tips). Good luck.

smallpau1 - Go Blues [Lower My Fees] October 24 2006 11:31 PM EDT

Thanks a lot Poison! Ill implement it tomorrow, its not due till 9 PM CST. Hopefully i can figure it out tho, Thanks again!
This thread is closed to new posts. However, you are welcome to reference it from a new thread; link this with the html <a href="/bboard/q-and-a-fetch-msg.tcl?msg_id=001w2y">C++ GPA program help</a>