問題

私は、ユーザーから学生名と成績をベクトルに収集し、ベクトルを使って平均を計算するプログラムを作っています。ユーザーが「完了」と入力すると、whileループは破損し、次のコードに移動するはずです。しかし、私が作ったwhileループは壊れません。これを行うより効率的な方法はありますか?

私はboolがtrueのときに壊れるboolを作成しようとしましたが、まだ動作しませんでした。

 while (name != "done") {
     cout << "Enter name and grade: ";
     cin >> name;

     if (!(cin >> score)) {
          cin.clear;
          cin.ignore(256, '
');
          cout << "Re-enter grade: ";
          cin >> score;
     }

     else {
          studentName.push_back(name);
          studentScore.push_back(score);
     }
}
 

whileループは、 "done"が入力されたときに終了するはずですが、代わりに改行を作成して何も出力しません。

  ベストアンサー

while(){}をdo {} while()に置き換えることで、問題を簡単に解決できると思います。

コードは次のようになります

 do{
     cout << "Enter name and grade: ";
     cin >> name;

     if (!(cin >> score)) {
          cin.clear;
          cin.ignore(256, '
');
          cout << "Re-enter grade: ";
          cin >> score;
     }

     else {
          studentName.push_back(name);
          studentScore.push_back(score);
     }
}while (name != "done");
 

  同じタグがついた質問を見る

c++