ich dieses Stück Code aus meiner Übung haben, in denen muss ich:Mit <vector> mit cin und für() Schleife C++
- einen Schüler hinzufügen mit seinem Namen, ID, Bildungsniveau und 3 Sorten ändern
- eine Note eines Schülers
- löschen Student
- Zeigen Sie eine Liste der zugelassenen Studenten
- Zeigen Sie eine Liste der repproved Studenten
- zeigen eine vollständige lis t
So habe ich dies mit Vektoren getan und hier ist mein Code:
int resp = 0;
vector<int> ids;
vector<string> names;
vector<string> levels;
vector<double> grades1;
vector<double> grades2;
vector<double> grades3;
vector<double> average;
vector<double> approved;
vector<double> repproved;
string name, level;
int id, elim, id_delete, i=0;
double grade=0, sum=0;
do {
cout<<"######### OPTIONS MENU #########"<<"\n\n";
cout<<"[1] Add a student"<<"\n";
cout<<"[2] Add grades of a student"<<"\n";
cout<<"[3] Modify grades of a student"<<"\n";
cout<<"[4] Delete a student"<<"\n";
cout<<"[5] Show approved list"<<"\n";
cout<<"[6] Show repproved list"<<"\n";
cout<<"[7] Show the full list"<<"\n";
cout<<"[8] Exit"<<"\n\n";
cin>>resp;
switch(resp) {
case 1:
cout<<"Enter the student's name: \n";
cin.sync(); cin.clear();
getline(cin, name);
names.push_back(name);
cout<<"Enter the student's id: \n";
cin>>id;
ids.push_back(id);
cout<<"Enter the student's school level: \n";
cin.sync(); cin.clear();
getline(cin, level);
levels.push_back(level);
cout<<"Student added";
break;
case 2:
cout<<"Enter the grade 1 of the student: \n";
cin>>grade;
grades1.push_back(grade);
cout<<"Enter the grade 2 of the student: \n";
cin>>grade;
grades2.push_back(grade);
cout<<"Enter the grade 3 of the student: \n";
cin>>grade;
grades3.push_back(grade);
cout<<"Grades added";
break;
case 3:
cout<<"Enter the student's id you wish to modify grades on: \n";
cin>>id_delete;
for(int i=0; i<ids.size(); i++) {
if(id_delete==ids[i]) {
id_delete = i;
break;
}
}
i=id_delete;
cout<<"Enter the new grade 1 of the student: \n";
cin>>grade;
grades1[i] = grade;
cout<<"Enter the new grade 2 of the student: \n";
cin>>grade;
grades2[i] = grade;
cout<<"Enter the new grade 3 of the student: \n";
cin>>grade;
grades3[i] = grade;
cout<<"Grades modified\n";
break;
case 4:
cout<<"Enter the student's id you wish delete: \n";
cin>>id_delete;
for(int i=0; i<ids.size(); i++) {
if(id_delete==ids[i]) {
id_delete = i;
break;
}
}
ids.erase (ids.begin()+(id_delete-1));
names.erase (names.begin()+(id_delete-1));
levels.erase (levels.begin()+(id_delete-1));
grades1.erase (grades1.begin()+(id_delete-1));
grades2.erase (grades2.begin()+(id_delete-1));
grades3.erase (grades3.begin()+(id_delete-1));
cout<<"Student deleted\n";
break;
case 5:
for(i = 0; i<ids.size(); i++) {
average[i] = (grades1[i] + grades2[i] + grades3[i])/3;
}
for(i = 0; i<ids.size(); i++) {
if(average[i] >= 7 && average[i] <= 10) {
approved[i] = average[i];
} else {
repproved[i] = average[i];
}
}
for(i = 0; i<ids.size(); i++) {
cout<<approved[i]<<endl;
}
break;
case 6:
for(i = 0; i<ids.size(); i++) {
cout<<repproved[i]<<endl;
}
break;
case 7:
for(i = 0; i<ids.size(); i++) {
cout<<approved[i]<<endl;
}
for(i = 0; i<ids.size(); i++) {
cout<<repproved[i]<<endl;
}
Aber es wirft "exercise.exe hat aufgehört zu arbeiten" bei der Auswahl von Optionen 5, 6 und 7.
PS. Ich bin ein Anfänger in C++ und es ist meine erste Programmiersprache, leider ...
Fügen Sie den gesamten Code ein. Weißt du, wie man debuggt? Was hast du bisher versucht. – novice
Wenn ich 5 eintippe, ist das allererste, was Ihr Programm danach macht, "Durchschnitt [0] = (Noten1 [0] + Noten2 [0] + Noten3 [0])/3;", aber "Durchschnitt" ist leer , also gibt es keinen Durchschnitt [0]. – immibis
Pastebin der gesamte Code: http://pastebin.com/FcAkhjY1 –