2016-11-30 14 views
-1

このループがテキストファイルの整数を配列に挿入していない理由を知りません。ファイル入力を使用して整数を入力する

私は100個の整数を含むテキストファイルをすべてスペースで区切ります。これらの整数を配列に挿入しようとしています。しかし、例えば[2]のように出力すると0が出力され、数字が配列に挿入されていないと考えられます。そのためwhile文の

listFile.open("unsortedlist.txt"); 
cout << endl << "Unsorted list = "; 
for (int i = 0; i < 100; i++) 
{ 
     while (listFile >> individualNum) 
     { 
      a[i] = individualNum; 
      cout << individualNum << ", "; 
     } 
} 


cout << "\n" << a[1] << "\n"; 

答えて

0

次のようなものを使用することができます。

そして、すべての番号をa[i]に割り当ててください。同じ配列要素。それぞれ毎回。

外部ループの最初の反復では、iは0なので、コードはファイルからすべての数値を読み込み、各数値をa[0]に割り当てます。

内側のループがファイルの最後に到達すると、終了します。次に、外側のforループはiを1に増分し、再度繰り返し、内部ループを実行します。ファイル全体が読み込まれているので、内部ループは何もしません。配列の残りの98要素については、それ以上のことはしません。

ループはおそらく、単純にする必要があります。

for (int i = 0; i < 100; i++) 
     listFile >> a[i]; 

は100個の整数がファイルに正確に存在した場合にのみ、もちろん、これは正常に動作することに注意してください。

2

は、正常に読み込まれているすべての数字はa[0]に割り当てられています。結果として、a[0]の最終値が最後の有効な入力であり、何もaの他の要素のどれにも割り当てられていません。内側のループは熱心ファイルからのすべての番号を読み込みます

for (int i = 0; i < 100 && listFile >> individualNum; i++) 
{ 
    a[i] = individualNum; 
    cout << individualNum << ", "; 
} 
関連する問題