Бесконечный цикл. Не могу понять почему.
The problem is that infinite looping is taking place and i can't figure out why this is happening. It happens when I enter the choice as 1 and after entering Name, Role and Subject, it goes infinite. I've created a class "Professor" with data members as 3 vectors of type string and an "int count" along with three member functions as "Recruit", "DisplayInfo" and "Remove". I'm basically trying to build a data of college professors. I tried debugging the code. After first iteration it enters the loop and the switch and then directly to default case without me choosing the value for "choice"
Что я уже пробовал:
<pre> #include<iostream> #include<string> #include<vector> #include<algorithm> using namespace std; class Professor { private: vector<string> Name; vector<string> Role; vector<string>Subject; static int count1; public: void Recruit() { string name,role,subject; cout<<"Enter the Name: "; getline(cin, name); cin.ignore(); Name.push_back(name); cout<<"Enter the Role: "; getline(cin, role); cin.ignore(); Role.push_back(role); cout<<"Enter the Subject to be assigned: "; getline(cin, subject); cin.ignore(); Subject.push_back(subject); count1++; } void DisplayInfo() { //cout<<"\nName Role Subject\n"; for(int i=0; i<count1; i++) { cout<<"Name: "<<Name[i]<<"\n"; cout<<"Role: "<<Role[i]<<"\n"; cout<<"Subject: "<<Subject[i]<<"\n"; } cout<<"\n\n"; } void Remove() { string name, role, subject; cout<<"Enter the name of the Professor, his/her Role and the subject assigned to him/her: "; cin>>name>>role>>subject; for(int i=0; i<count1; i++) { if(Name[i]==name && Role[i]==role && Subject[i]==subject) { vector<string>::iterator iter1 = find(Name.begin(), Name.end(), name); if(iter1 == Name.end()) { cout<<""; } else{ Name.erase(iter1); } vector<string>::iterator iter2 = find(Role.begin(), Role.end(), role); if(iter2 == Role.end()) { cout<<""; } else{ Role.erase(iter2); } vector<string>::iterator iter3 = find(Subject.begin(), Subject.end(), subject); if(iter3 == Role.end()) { cout<<""; } else{ Role.erase(iter3); } } } } };
int main() { Professor p; int choice; do{ cout<<"You have the following Choices:\n"; cout<<"1) Recruit a Professor\n"; cout<<"2) Display the Information about Professors\n"; cout<<"3) Remove a Professor\n"; cout<<"4) Quit\n"; cout<<"\n\nEnter the choice:"; cin>>choice; switch(choice) { case 1: { p.Recruit(); break; } case 2: { p.DisplayInfo(); break; } case 3: { p.Remove(); break; } case 4: { break; } default: { cout<<"Sorry Wrong Choice!!\n"; break; } } }while(choice!=4); return 0; }