2

OK、私はこの割り当てを持っており、5人の別々のバスケットボール選手に関するデータをユーザーに求める必要があります。私の質問プロンプトはforループにあり、ループは最初のプレーヤーに対して最初に正常に実行されますが、2番目のプレーヤーの情報を入力する必要がある場合、最初の2つの質問プロンプトが同じ行に一緒に表示されます。それを理解することはできません、これを修正する方法についての提案に感謝して、私が明らかに欠けているのは小さなものだと確信しています。

出力は次のとおりです。

Enter the name, number, and points scored for each of the 5 players.
Enter the name of player # 1: Michael Jordan
Enter the number of player # 1: 23
Enter points scored for player # 1: 64
Enter the name of player # 2: Enter the number of player # 2: <------- * questions 1 and 2 *

これが私のコードです:

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;


//struct of Basketball Player info
struct BasketballPlayerInfo
{
    string name; //player name

    int playerNum, //player number
        pointsScored; //points scored

};

int main()
{
    int index; //loop count
    const int numPlayers = 5; //nuymber of players
    BasketballPlayerInfo players[numPlayers]; //Array of players

    //ask user for Basketball Player Info
    cout << "Enter the name, number, and points scored for each of the 5 players.\n";

    for (index = 0; index < numPlayers; index++)
    {
        //collect player name
        cout << "Enter the name of player # " << (index + 1);
        cout << ": ";
        getline(cin, players[index].name);

        //collect players number
        cout << "Enter the number of player # " << (index + 1);
        cout << ": ";
        cin >> players[index].playerNum;

        //collect points scored
        cout << "Enter points scored for player # " << (index + 1);
        cout << ": ";
        cin >> players[index].pointsScored;
    }

 system("pause");
return 0;

}
4

1 に答える 1

5

数値 (例: int) を読み取った後、まだ読み取っていない改行が入力バッファーに残っています。別の数値を読み取ると、空白 (数値を検索するための改行を含む) はスキップされます。ただし、 stringを読み取ると、入力バッファーの改行は空の文字列として読み取られます。

機能させるには、文字列を読み取ろうとする前に、入力バッファーから改行を取得する必要があります。

于 2012-04-07T16:17:58.100 に答える