1

実行時に必要な数のエントリを入力できるように、「動的」であることを望んでいる配列にデータを入力しようとしています。ただし、ポインターNthTeamが指していると思われる配列にはデータが入力されていません。

int* NthTeam = NULL;    

NthTeam = (int*)realloc(NthTeam,(playerCounter*STND_NO_GAMES)*sizeof(int));

// loops through each player's standard number of games
for (int i = 1; i <= STND_NO_GAMES; i++) {
    //input the score into the remalloced array
    cout << "Enter player " << playerCounter << "'s score " << i << ": ";
    cin >> inputValue;
    NthTeam[((playerCounter-1)*STND_NO_GAMES+(i-1)))] = SanityCheck(inputValue);
 }

ただし、cin >> NthTeam[(playerCounter - 1) * STND_NO_GAMES + (i - 1)]コードで使用すると機能します...配列にデータが入力されます。

このリンクから、通常の配列と同じように NthTeam を使用できると信じるようになりましたが、それがここで起こっているとは思いません。単に使用できない理由はcin、入力を配列に入れる前に有効性チェックを実行することになっているためです。

私は答えを探すのに非常に迷っています。その多くは、現在の私には複雑すぎます。

4

1 に答える 1

0

C++ でプログラミングしていると仮定すると、標準ライブラリが役に立ちます。例: std::vector。これは脳死の変更であり、必ず次のことを行って#include <vector>ください。

std::vector<int> NthTeam;    

// loop through each player's standard number of games
// inputting the score into the vector

for (int i = 1; i <= STND_NO_GAMES; i++) {
    cout << "Enter player " << playerCounter << "'s score " << i << ": ";
    cin >> inputValue;
    NthTeam.push_back(SanityCheck(inputValue));
}

無効な入力 (「トマト」のスコアを入力するなど) が入力された場合にどうなるかを考える必要があります。これが のエラー ステータスにどのように影響するかcin、最後の試行でエラーが発生したときに から別の整数を読み込もうとした場合にどうなるか、およびどうinputValueなるかを検討してください。

まだ「SanityCheck」が必要な場合もありますが、整数のみをチェックする必要があることは当然のことかもしれません。

于 2012-04-19T19:51:22.927 に答える