2016-12-20 7 views
-3

私はデータを含むテキストファイルを持っており、これを2Dベクトルに入れました。私はこのループですべてのデータを印刷できます。C++ループの2Dベクトル

int M = 1024; int N = 768 // row/column 
int R = 49; int C = 36  // row/column 

for (double bx = 0; bx < M; bx += R) 
    for (double by = 0; by < N; by += C) 
    { 
     for (int x = 0; ((x < R) && ((bx + x) < M)); ++x) 
     { 
      for (int y = 0; ((y < C) && ((by + y) < N)); ++y) 
      { 
       if ((bx + x) >= M) 
       { 
        std::cout << (bx + x) << (by + y) << " "; 

       } 
       cout << MainIMG_2DVector[bx + x][by + y] << " "; 
      } 
     } 
     cout << "\n\n\n" << endl; 
    } 

私は、データの最初のブロックを取得したい場合は、私はこのループを使用します。私は、テキストファイルからのデータとの最初のブロックを比較すると

for (int i = 0; i < 49; i++) 
    { 
     for (int j = 0; j < 36; j++) 
     { 
      cout << MainIMG_2DVector[i][j] << " "; 
     } 
    } 

、それは正しいです。

しかし、データの2番目のブロックを取得してテキストファイルと比較すると、間違っています。

for (int i = 49; i < 98; i++) 
    { 
     for (int j = 36; j < 72; j++) 
     { 
      cout << MainIMG_2DVector[i][j] << " "; 
     } 
    } 

私は2番目のループが間違っていることを知っていますが、これを修正する方法はわかりません。 誰かが私を助けてくれますか?

+0

完全なコードを投稿してください。私はあなたの配列をどのように宣言したのか考えていません。また、M、N、R、Cはconstですよね?なぜダブルスを使用していますか? –

+0

最初のブロックに関する2番目のデータブロックはどこにありますか? 2番目のブロックの行と列の両方に変更しました。 –

答えて

1

あなたが何を望んでいるのかはっきりしませんが、私が書いたときに私はテーブルを想像しました。あなたのコードは平面ジオメトリのように "II象限"と "IV象限"を与えます。 "III象限"を取得するには、

for (int i = 49; i < 98; i++) 
    { 
     for (int j = 0; j < 36; j++) 
    { 
      cout << MainIMG_2DVector[i][j] << " "; 
    } 
    }