Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的嵌套循环+;和用户输入_C++_Loops_Nested Loops - Fatal编程技术网

C++ C+中的嵌套循环+;和用户输入

C++ C+中的嵌套循环+;和用户输入,c++,loops,nested-loops,C++,Loops,Nested Loops,我对编程非常陌生,我有一项任务需要完成以下几点: 询问总人数 得到他们每个人的名字 允许用户为每个人输入最多5分 如果某个人的分数低于5分,输入-100将停止该操作 到目前为止,我写了以下内容: #include <iostream> using namespace std; int main() { string personName; int totalPerson, personScoreCounter; double personGrade,

我对编程非常陌生,我有一项任务需要完成以下几点:

  • 询问总人数
  • 得到他们每个人的名字
  • 允许用户为每个人输入最多5分
  • 如果某个人的分数低于5分,输入-100将停止该操作
到目前为止,我写了以下内容:

#include <iostream>

using namespace std;

int main() {

    string personName;
    int totalPerson, personScoreCounter;
    double personGrade, personGradeTotal;

    cout << "Input total amount of people: ";
    cin >> totalPerson;

   for (int person = 1; person <= totalPerson; person++)
   {
       cout << "Input name for person " << person << ": ";
       getline(cin, personName);
       cin.ignore();

       while ( (personGrade != -100) && (personScoreCounter <= 5) )
       {
           cout << "Input up to 5 scores for " << personName << " (-100 to end): ";
           cin >> personGrade;

           if (personGrade >= 0 && personGrade <= 100) // valid range of scores
           {
               personGradeTotal += personGrade;
               personScoreCounter++;
           }
           else
           {
               cout << "Input only scores from 0-100" << endl;
           }

           cout << "Input up to 5 scores for " << personName << " (-100 to end): ";
           cin >> personGrade;
       }
}

    // calculate averages and other stuff in here.

    return 0;
}
#包括
使用名称空间std;
int main(){
字符串personName;
int totalPerson、personScoreCounter;
双倍个人收入,个人收入总额;
cout>totalPerson;

对于(int person=1;person在
组中,您只想使用
cout
行一次(开始时看起来不错)

您的第一个检查应该是
==-100
或类似的,因为现在,如果您输入
-100
,您将得到一条“仅输入0到100分”的消息

每次使用
cin>>变量
后,应保留一个
cin.ignore();
调用,因为这样会删除EoL字符

示例代码:

#include <iostream>

using namespace std;

int main() {
    int totalPerson;

    cout << "Input total number of people: ";
    cin >> totalPerson;
    cin.ignore();

   for (int person = 1; person <= totalPerson; person++)
   {
       int personScoreCounter=0;
       double personGrade = -1, personGradeTotal=0;
       string personName;

       cout << "Input name for person " << person << ": ";
       std::getline(cin, personName);

       while ( (personGrade != -100) && (personScoreCounter < 5) )
       {
           cout << "Input up to 5 scores for " << personName << " (-100 to end): ";
           cin >> personGrade;
           cin.ignore();

           if (personGrade == -100) {
               break;
           } else if (personGrade >= 0 && personGrade <= 100) {
               personGradeTotal += personGrade;
               personScoreCounter++;
           } else {
               cout << "Input only scores from 0-100" << endl;
           }
       }

    // calculate averages and other stuff in here.
    double avg = personGradeTotal / personScoreCounter;
    cout << "Avg = " << avg << endl;
   }
    return 0;
}
#包括
使用名称空间std;
int main(){
整人;
cout>totalPerson;
cin.ignore();

对于(int person=1;person您也可以尝试cin.getline()而不是getline(std::cin,…):

这也允许在输入中使用空格。

可能与
cin.ignore()有关<代码> >人物> <代码> >或代码>人物记分器>代码>,这是未定义的行为。谢谢克里斯,先生,我将等待你的回答。@ CysB2244,你也可以考虑将你的代码从<代码>输入到5个名字:< <代码> >代码>进入分数>(计数器)。对于名称:
或类似内容,其内容为“为MyName:(-100到end)输入分数1”,为MyName:(-100到end)输入分数2,…请注意,与@user657267一样,您应该定义(而不仅仅是声明)可以在没有赋值的情况下使用的变量。例如,在
personGradeTotal
上使用
+=
运算符,但不首先给出
personGradeTotal
值,这是个坏消息(我想-用语言律师式的问题检查)。
int max_length = 30;
std::cin.getline(personName, max_length, '\n'); // \n is option termination.