私は、テキストファイルのデータで配列を塗りつぶすプログラムに取り組んでいます。私が配列を出力するとき、その内容は私がそれらを読むと思った順序ではありません。私は問題が配列にデータを入力するか、または配列をiostreamに出力するforループのいずれかであると考えています。誰も私の間違いを見つけられますか?この配列を間違って埋めるか、間違って出力していますか?
データ:
(Iは0と1からそれを区別するために2-31に各行の最初の数を変更)
出力:
コード:
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int main()
{
ifstream inFile;
int FC_Row, FC_Col, EconRow, EconCol, seat, a, b;
inFile.open("Airplane.txt");
inFile >> FC_Row >> FC_Col >> EconRow >> EconCol;
int airplane[100][6];
int CurRow = 0;
int CurCol = 0;
while ((inFile >> seat) && (CurRow < FC_Row))
{
airplane[CurRow][CurCol] = seat;
++CurCol;
if (CurCol == FC_Col)
{
++CurRow;
CurCol = 0;
}
}
while ((inFile >> seat) && (CurRow < EconRow))
{
airplane[CurRow][CurCol] = seat;
++CurCol;
if (CurCol == EconCol)
{
++CurRow;
CurCol = 0;
}
}
cout << setw(11)<< "A" << setw(6) << "B"
<< setw(6) << "C" << setw(6) << "D"
<< setw(6) << "E" << setw(6) << "F" << endl;
cout << " " << endl;
cout << setw(21) << "First Class" << endl;
for (a = 0; a < FC_Row; a++)
{
cout << "Row " << setw(2) << a + 1;
for (b = 0; b < FC_Col; b++)
cout << setw(5) << airplane[a][b] << " ";
cout << endl;
}
cout << setw(23) << "Economy Class" << endl;
for (a = 6; a < EconRow; a++)
{
cout <<"Row " << setw(2)<< a + 1;
for (b = 0; b < EconCol; b++)
cout << setw(5) << airplane[a][b] << " ";
cout << endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
ダンそれ、ザッツはなぜ私は当初、2つの配列を使用するが、必要条件は一つだけの配列をしたいです!どうすればこの問題を回避できますか? – darko
私はあなたの前の質問でこのループについて提案した方法:P - http://stackoverflow.com/questions/5239689/reading-data-from-file-into-array - ちょうど1つの配列を使用し、CurRowをリセットしないでくださいファーストクラスを読む – Erik
推奨される修正で更新されました。これは何のエラーチェックもなく、私はまだあなたの他のQからのループメカニズムが良いと思います。 – Erik