(注意:這是問題的更新版本) 因此,我正在升級之前處理過的項目。 現在,它將程序的輸出和組織成績一起打印到一個文件中。 到目前爲止,除了一個錯誤,一切都應該正常工作。 下面是代碼:在C++中重複聲明的問題
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct Classes
{
double acousticGuitarEnsemble;
double biology;
double english;
double geometry;
double hebrew;
double jewishStudies;
double worldHistory;
};
void grade1(Classes eitan)
{
newGrade1:
cout << "Which grade are you entering? (Use the following format: exampleFormat): ";
string classBeingEntered1;
cin >> classBeingEntered1;
cout << "Enter the new grade: ";
double grade1;
cin >> grade1;
cout << "Grade entered." << endl;
if (classBeingEntered1 == "acousticGuitarEnsemble")
eitan.acousticGuitarEnsemble = grade1;
else if (classBeingEntered1 == "biology")
eitan.biology = grade1;
else if (classBeingEntered1 == "english")
eitan.english = grade1;
else if (classBeingEntered1 == "jewishStudies")
eitan.jewishStudies = grade1;
else if (classBeingEntered1 == "geometry")
eitan.geometry = grade1;
else if (classBeingEntered1 == "hebrew")
eitan.hebrew = grade1;
else if (classBeingEntered1 == "worldHistory")
eitan.worldHistory = grade1;
else
cout << "Invalid class name. Try again." << endl;
goto newGrade1;
}
void grade2(Classes eitan)
{
newGrade2:
cout << "Which grade are you entering? (Use the following format: exampleFormat): ";
string classBeingEntered2;
cin >> classBeingEntered2;
cout << "Enter the new grade: ";
double grade2;
cin >> grade2;
cout << "Grade entered." << endl;
if (classBeingEntered2 == "acousticGuitarEnsemble")
eitan.acousticGuitarEnsemble = grade2;
else if (classBeingEntered2 == "biology")
eitan.biology = grade2;
else if (classBeingEntered2 == "english")
eitan.english = grade2;
else if (classBeingEntered2 == "jewishStudies")
eitan.jewishStudies = grade2;
else if (classBeingEntered2 == "geometry")
eitan.geometry = grade2;
else if (classBeingEntered2 == "hebrew")
eitan.hebrew = grade2;
else if (classBeingEntered2 == "worldHistory")
eitan.worldHistory = grade2;
else
cout << "Invalid class name. Try again." << endl;
goto newGrade2;
}
void grade3(Classes eitan)
{
newGrade3:
cout << "Which grade are you entering? (Use the following format: exampleFormat): ";
string classBeingEntered3;
cin >> classBeingEntered3;
cout << "Enter the new grade: ";
double grade3;
cin >> grade3;
cout << "Grade entered." << endl;
if (classBeingEntered3 == "acousticGuitarEnsemble")
eitan.acousticGuitarEnsemble = grade3;
else if (classBeingEntered3 == "biology")
eitan.biology = grade3;
else if (classBeingEntered3 == "english")
eitan.english = grade3;
else if (classBeingEntered3 == "jewishStudies")
eitan.jewishStudies = grade3;
else if (classBeingEntered3 == "geometry")
eitan.geometry = grade3;
else if (classBeingEntered3 == "hebrew")
eitan.hebrew = grade3;
else if (classBeingEntered3 == "worldHistory")
eitan.worldHistory = grade3;
else
cout << "Invalid class name. Try again." << endl;
goto newGrade3;
}
void grade4(Classes eitan)
{
newGrade4:
cout << "Which grade are you entering? (Use the following format: exampleFormat): ";
string classBeingEntered4;
cin >> classBeingEntered4;
cout << "Enter the new grade: ";
double grade4;
cin >> grade4;
cout << "Grade entered." << endl;
if (classBeingEntered4 == "acousticGuitarEnsemble")
eitan.acousticGuitarEnsemble = grade4;
else if (classBeingEntered4 == "biology")
eitan.biology = grade4;
else if (classBeingEntered4 == "english")
eitan.english = grade4;
else if (classBeingEntered4 == "jewishStudies")
eitan.jewishStudies = grade4;
else if (classBeingEntered4 == "geometry")
eitan.geometry = grade4;
else if (classBeingEntered4 == "hebrew")
eitan.hebrew = grade4;
else if (classBeingEntered4 == "worldHistory")
eitan.worldHistory = grade4;
else
cout << "Invalid class name. Try again." << endl;
goto newGrade4;
}
void grade5(Classes eitan)
{
newGrade5:
cout << "Which grade are you entering? (Use the following format: exampleFormat): ";
string classBeingEntered5;
cin >> classBeingEntered5;
cout << "Enter the new grade: ";
double grade5;
cin >> grade5;
cout << "Grade entered." << endl;
if (classBeingEntered5 == "acousticGuitarEnsemble")
eitan.acousticGuitarEnsemble = grade5;
else if (classBeingEntered5 == "biology")
eitan.biology = grade5;
else if (classBeingEntered5 == "english")
eitan.english = grade5;
else if (classBeingEntered5 == "jewishStudies")
eitan.jewishStudies = grade5;
else if (classBeingEntered5 == "geometry")
eitan.geometry = grade5;
else if (classBeingEntered5 == "hebrew")
eitan.hebrew = grade5;
else if (classBeingEntered5 == "worldHistory")
eitan.worldHistory = grade5;
else
cout << "Invalid class name. Try again." << endl;
goto newGrade5;
}
void grade6(Classes eitan)
{
newGrade6:
cout << "Which grade are you entering? (Use the following format: exampleFormat): ";
string classBeingEntered6;
cin >> classBeingEntered6;
cout << "Enter the new grade: ";
double grade6;
cin >> grade6;
cout << "Grade entered." << endl;
if (classBeingEntered6 == "acousticGuitarEnsemble")
eitan.acousticGuitarEnsemble = grade6;
else if (classBeingEntered6 == "biology")
eitan.biology = grade6;
else if (classBeingEntered6 == "english")
eitan.english = grade6;
else if (classBeingEntered6 == "jewishStudies")
eitan.jewishStudies = grade6;
else if (classBeingEntered6 == "geometry")
eitan.geometry = grade6;
else if (classBeingEntered6 == "hebrew")
eitan.hebrew = grade6;
else if (classBeingEntered6 == "worldHistory")
eitan.worldHistory = grade6;
else
cout << "Invalid class name. Try again." << endl;
goto newGrade6;
}
void grade7(Classes eitan)
{
newGrade7:
cout << "Which grade are you entering? (Use the following format: exampleFormat): ";
string classBeingEntered7;
cin >> classBeingEntered7;
cout << "Enter the new grade: ";
double grade7;
cin >> grade7;
cout << "Grade entered." << endl;
if (classBeingEntered7 == "acousticGuitarEnsemble")
eitan.acousticGuitarEnsemble = grade7;
else if (classBeingEntered7 == "biology")
eitan.biology = grade7;
else if (classBeingEntered7 == "english")
eitan.english = grade7;
else if (classBeingEntered7 == "jewishStudies")
eitan.jewishStudies = grade7;
else if (classBeingEntered7 == "geometry")
eitan.geometry = grade7;
else if (classBeingEntered7 == "hebrew")
eitan.hebrew = grade7;
else if (classBeingEntered7 == "worldHistory")
eitan.worldHistory = grade7;
else
cout << "Invalid class name. Try again." << endl;
goto newGrade7;
}
Classes gradeEditor(Classes eitan)
{
cout << "GradeBook 1.2" << endl;
grade1(eitan);
cout << "Editing next grade..." << endl;
grade2(eitan);
cout << "Editing next grade..." << endl;
grade3(eitan);
cout << "Editing next grade..." << endl;
grade4(eitan);
cout << "Editing next grade..." << endl;
grade5(eitan);
cout << "Editing next grade..." << endl;
grade6(eitan);
cout << "Entering next grade..." << endl;
grade7(eitan);
return eitan;
}
void choice(Classes eitan)
{
choiceBack:
cout << "Do you want to edit another grade? (If yes, you must reset all the grades) Press Y or N: ";
char chChoice;
cin >> chChoice;
switch (chChoice) {
case 'Y':
cout << "Alright then!" << endl;
do {
gradeEditor(eitan);
goto choiceBack; // Refers to beginning of choice() function
} while (chChoice == 'Y');
case 'N':
cout << "Printing grades..." << endl;
break;
case 'y':
cout << "Alright then!" << endl;
do {
gradeEditor(eitan);
goto choiceBack; // Refers to beginning of choice() function
} while (chChoice == 'y');
case 'n':
cout << "Printing grades..." << endl;
break;
}
}
void printGrades(Classes eitan)
{
cout << "Acoustic Guitar Ensemble: " << eitan.acousticGuitarEnsemble << endl;
cout << "Biology: " << eitan.biology << endl;
cout << "English: " << eitan.english << endl;
cout << "Jewish Studies: " << eitan.jewishStudies << endl;
cout << "Geometry: " << eitan.geometry << endl;
cout << "Hebrew: " << eitan.hebrew << endl;
cout << "World History: " << eitan.worldHistory << endl;
system("PAUSE");
}
int main(Classes eitan)
{
ofstream outputFile;
outputFile.open("userGrades.txt");
gradeEditor(eitan);
choice(eitan);
printGrades(eitan);
outputFile.close();
cout << "Grades saved to file!" << endl;
return 0;
}
在類gradeEditor(),我進入7個年級。 但是,7次後不停止。 任何人看到如何解決這個問題? - Eitan P.S:我知道人們在使用goto時遇到了問題。但是我還沒有想出一種方法來在那裏爲那些特定的情況使用一種方法。所以除非你能告訴我一個更好的替代品,否則別提它。 P.P.S:此時,我並不清楚如何更好地格式化我的程序。我非常瞭解編程語法,但現在我已經做到了。
那些' goto's應該是循環。 – chris
您的'gradeX'函數永遠不會返回!他們只是在循環中永遠轉到! –
而且,'gradeEditor()'和'gradeX()'函數之間沒有任何聯繫。他們應該返回什麼? –