GrImReApEr
Legacy Member
Hallo,
Ik ben momenteel aan het proberen c++ te leren. Momenteel heb ik in een programmaatje een fout, waar ik echt geen enkele oplossing op vindt. Het is de bedoeling dat op het einde de while-loop terug naar het begin keert en er dus weer een cijfer berekend kan worden. Dit doet hij echter niet en het programma sluit af.
Hier is de code:
Hopelijk kunnen jullie eraan uit, iemand een idee waarom de while lus niet terug naar het begin gaat?
Ik ben momenteel aan het proberen c++ te leren. Momenteel heb ik in een programmaatje een fout, waar ik echt geen enkele oplossing op vindt. Het is de bedoeling dat op het einde de while-loop terug naar het begin keert en er dus weer een cijfer berekend kan worden. Dit doet hij echter niet en het programma sluit af.
Hier is de code:
PHP:
//Grades.cpp
#include <iostream>
#include <string>
int main ()
{
using namespace std;
const float ENGLISH_MIDTERM_PERCENTAGE = .25;
const float ENGLISH_FINALEXAM_PERCENTAGE = .25;
const float ENGLISH_RESEARCH_PERCENTAGE = .30;
const float ENGLISH_PRESENTATION_PERCENTAGE = .20;
const float MATH_MIDTERM_PERCENTAGE = .50;
const float MATH_FINALEXAM_PERCENTAGE = .50;
const float SCIENCE_MIDTERM_PERCENTAGE = .40;
const float SCIENCE_FINALEXAM_PERCENTAGE = .40;
const float SCIENCE_RESEARCH_PERCENTAGE = .20;
int midterm;
int finalExamGrade;
int research;
int presentation;
float finalNumericGrade;
char response[256];
char finalLetterGrade;
string antwoord;
cout << "Do you want to calculate a grade? ";
cin >> antwoord;
for (int i = 0; i < antwoord.length(); i++) {
antwoord[i] = toupper(antwoord[i]);
}
while (antwoord == "YES") {
//Type of student
cout << "What type of student? 1 = English, 2 = Math, 3 = Science ";
cin.ignore();
cin.getline(response,256);
if (strlen(response) == 0)
{
cout << "You must select a student type!";
return 1;
}
if ((atoi(response) < 1 ) || (atoi(response) > 3))
{
cout << response << " is not a valid student type!";
return 1;
}
//valid studenttype!
switch(atoi(response)) //begin switch
{
case 1: // English student
cout << "Enter the midterm grade: ";
cin.getline(response,256);
midterm = atoi(response); //declaratie variabele, response mag terug leeg
cout << "Enter the Final exam grade: ";
cin.getline(response,256);
finalExamGrade = atoi(response);
cout << "Enter the research grade: ";
cin.getline(response,256);
research = atoi(response);
cout << "Enter the presentation grade: ";
cin.getline(response,256);
presentation = atoi(response);
finalNumericGrade = (midterm * ENGLISH_MIDTERM_PERCENTAGE) + (finalExamGrade*ENGLISH_FINALEXAM_PERCENTAGE) +
(research * ENGLISH_RESEARCH_PERCENTAGE) + (presentation * ENGLISH_PRESENTATION_PERCENTAGE);
if (finalNumericGrade >= 93)
finalLetterGrade = 'A';
else
if ((finalNumericGrade >= 85) & (finalNumericGrade < 93))
finalLetterGrade = 'B';
else
if ((finalNumericGrade <85) & (finalNumericGrade >=78))
finalLetterGrade = 'C';
else
if ((finalNumericGrade <78) & (finalNumericGrade >=70))
finalLetterGrade = 'D';
else
if (finalNumericGrade < 70)
finalLetterGrade = 'F';
cout << endl <<
"**** ENGLISH STUDENT ****" << endl << endl;
cout << "Final midterm grade is: " << midterm << endl;
cout << "Final exam grade is: " << finalExamGrade << endl;
cout << "Final research grade is: " << research << endl;
cout << "Final presentation grade is: " << presentation << endl << endl;
cout << "Final numeric grade is: " << finalNumericGrade << endl;
cout << "Final letter grade is: " << finalLetterGrade;
break;
case 2: // Math student
cout << "Enter the midterm grade: ";
cin.getline(response,256);
midterm = atoi(response); //declaratie variabele, response mag terug leeg
cout << "Enter the Final exam grade: ";
cin.getline(response,256);
finalExamGrade = atoi(response);
finalNumericGrade = (midterm * MATH_MIDTERM_PERCENTAGE) + (finalExamGrade*MATH_FINALEXAM_PERCENTAGE);
if (finalNumericGrade >= 93)
finalLetterGrade = 'A';
else
if ((finalNumericGrade >= 85) & (finalNumericGrade < 93))
finalLetterGrade = 'B';
else
if ((finalNumericGrade <85) & (finalNumericGrade >=78))
finalLetterGrade = 'C';
else
if ((finalNumericGrade <78) & (finalNumericGrade >=70))
finalLetterGrade = 'D';
else
if (finalNumericGrade < 70)
finalLetterGrade = 'F';
cout << endl <<
"**** MATH STUDENT ****" << endl << endl;
cout << "Final midterm grade is: " << midterm << endl;
cout << "Final exam grade is: " << finalExamGrade << endl << endl;
cout << "Final numeric grade is: " << finalNumericGrade << endl;
cout << "Final letter grade is: " << finalLetterGrade;
break;
case 3: //SCIENCE student
cout << "Enter the midterm grade: ";
cin.getline(response,256);
midterm = atoi(response); //declaratie variabele, response mag terug leeg
cout << "Enter the Final exam grade: ";
cin.getline(response,256);
finalExamGrade = atoi(response);
cout << "Enter the research grade: ";
cin.getline(response,256);
research = atoi(response);
finalNumericGrade = (midterm * SCIENCE_MIDTERM_PERCENTAGE) + (finalExamGrade*SCIENCE_FINALEXAM_PERCENTAGE) + (research * SCIENCE_RESEARCH_PERCENTAGE);
if (finalNumericGrade >= 93)
finalLetterGrade = 'A';
else
if ((finalNumericGrade >= 85) & (finalNumericGrade < 93))
finalLetterGrade = 'B';
else
if ((finalNumericGrade <85) & (finalNumericGrade >=78))
finalLetterGrade = 'C';
else
if ((finalNumericGrade <78) & (finalNumericGrade >=70))
finalLetterGrade = 'D';
else
if (finalNumericGrade < 70)
finalLetterGrade = 'F';
cout << endl <<
"**** SCIENCE STUDENT ****" << endl << endl;
cout << "Final midterm grade is: " << midterm << endl;
cout << "Final exam grade is: " << finalExamGrade << endl;
cout << "Final research grade is: " << research << endl << endl;
cout << "Final numeric grade is: " << finalNumericGrade << endl;
cout << "Final letter grade is: " << finalLetterGrade;
break;
default:
cout << response << " is not a valid student type. ";
return (1);
}
cout << endl << endl << "Do you have another grade to calculate? ";
cin >> antwoord;
for (int i = 0; i < antwoord.length(); i++) { //begin forlus
antwoord = toupper(antwoord[i]); //capitals maken van yes --> YES
} //einde for lus
} //einde While lus?
cout << "Thanks for using the grade calculation program! ";
return 0;
} //einde main functie
Hopelijk kunnen jullie eraan uit, iemand een idee waarom de while lus niet terug naar het begin gaat?