2012-04-19 21 views
1

私は、実行時に必要なだけ多くのエントリを入力できるように、私が望む配列を "動的"に配置しようとしています。しかし、私はポインタNthTeamが指していると推測する配列は、移入されていない:私は私のコードでcin >> NthTeam[(playerCounter - 1) * STND_NO_GAMES + (i - 1)]を使用する場合この配列を入力値に代入するにはどうすればよいですか?

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); 
} 

をしかし、それは仕事をし...配列が移入されます。

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

私は非常に迷って答えを求めています。私の今のところでは、その多くが複雑すぎます。

+0

こんにちは、あなたはcとして質問にタグを付けますが、コードはC++のようです。それがどれであるかを明確にしてください。 – MByD

+0

なぜmallocではなくreallocを使用していますか? – TJD

+0

あなたはサイズ変更のためにメモリを再割り当てするための 'realloc'を使用すべきではありません。あなたは 'malloc'か' calloc'を使うべきです。 – twain249

答えて

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"が必要な場合がありますが、整数をチェックするだけでよいということは当然のことです。

関連する問題