我制作了一個要求學生資訊(姓名、課程和成績)的程式,它被配置為在輸入課程名稱或學生名稱時中斷 stop
這是我的代碼:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<string> v;
string name;
string course;
string grade;
while (name != "stop") {
cout << "Please type a student name: ";
getline(cin, name);
if (name != "stop") {
v.push_back(name);
}
while (course != "stop") {
cout << "Please type a course name: ";
getline(cin, course);
if (course != "stop") {
v.push_back(course);
}
if(course != "stop" == 0){
break;
}
else {
cout << "Please type the grade: ";
getline(cin, grade);
v.push_back(grade);
}
}
}
//for (auto iter = v.begin(); iter != std::prev(v.end()); iter){
// std::cout << *iter << std::endl;
//}
return 0;
}
我希望程式在第一門學生課程被稱為“停止”時要求新學生,但這只是意味著每當輸入新學生姓名時,“課程”的 while 回圈保持“中斷”,因為最后一門課程進入是“停止”。
有想法該怎么解決這個嗎?
對不起,如果問題闡述得不好,如果您需要更多說明,請告訴我!
謝謝 :)
uj5u.com熱心網友回復:
對于初學者來說,這個 if 陳述句
if (name != "stop") {
應該擴大并包括應該重寫為 do while 回圈的內部 while 回圈。
例如
while (name != "stop") {
cout << "Please type a student name: ";
getline(cin, name);
if (name != "stop") {
v.push_back(name);
do
{
cout << "Please type a course name: ";
getline(cin, course);
if (course != "stop") {
v.push_back(course);
cout << "Please type the grade: ";
getline(cin, grade);
v.push_back(grade);
}
} while ( course != "stop" );
}
}
同樣,正如@Remy Lebeau在評論中所寫的那樣,外部 while 回圈也可以重寫為 do-while 回圈。
uj5u.com熱心網友回復:
您可以在中斷內部 while 回圈的位置將course變數設定為空字串。""if
像這樣:
if(course == "stop") {
course = "";
break;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/354736.html
