2011-12-24 13 views
1

私はタイムテーブルジェネレータをプロジェクトとして作成しています。C++プログラムで論理エラーが見つかりません

コードの一部に論理エラーがあるようです。

void _tmain(int argc, _TCHAR* argv[]) 
{ 
    int time=4; 
    int classes=2; 
    int teacher=4; 
    const int column=4;  
    const int rows=8;   
    int table[rows][column]; 
    int final_table[rows][column]; 
    int cell; 
    int temp=time; 
    int temp2=classes; 
    int temp3=teacher; 
    int cell_reset=111; 
    int cell_temp; 
    int k=0; 
    int selector_temp=0; 
    int selector_temp2=0; 

    cell=111; 

    //array initilization loop 
    for(int i=0;i<rows;i++) 
    { 
     for(int j=0;j<rows;j++) 
     { 
      table[i][j]=-1; 
     } 
    } 

    for(int i=0;i<rows;i++) 
    { 
     for(int j=0;j<rows;j++) 
     { 
      final_table[i][j]=-1; 
     } 
    } 

    //Number generator loop 
    for(int i=0;i<rows;) 
    { 
     while(k<classes) 
     { 
      for(int j=0;j<column;j++) 
      { 
       table[i][j]=cell; 
       cell++; 
      } 
      cell=cell_reset+10; 
      k++; 
      i++; 
     } 
     k=0; 
     cell=cell_reset+100; 
     cell_reset=cell; 
    } 

    //selector loop 
    int counter=0; 
    for(int i=0;i<rows;i++) 
    { 
     counter=0; 
     for(int j=0;j<column&&counter<1;j++) 
     { 
      if(table[i][j]==selector_temp+10) 
      { 
       table[i][j]=-1; 
      } 
      if(table[i][j]==selector_temp-10) 
      { 
       table[i][j]=-1; 
      } 
      if(table[i][j]!=-1) 
      { 
       selector_temp=table[i][j]; 
       final_table[i][j]=table[i][j]; 
       for(int gg=(j+1);gg<column;gg++) 
       { 
        table[i][gg]=-1; 
       } 
       selector_temp2=selector_temp; 
       while(k<time) 
       { 
        selector_temp2+=100; 
        for(int ii=0;ii<rows;ii++) 
        { 
         for(int jj=0;jj<column;jj++) 
         { 
          if(table[ii][jj]==selector_temp2) 
          { 
           table[ii][jj]=-1; 
          } 
         } 
        } 
        k++; 
       } 
       k=0; 
       counter++; 
      } 

     } 
    } 

//display loop 
     for(int i=0;i<rows;i++) 
     { 
     for(int j=0;j<column;j++) 
     { 
      cout<<final_table[i][j]; 
      cout<<" "; 
     } 
     cout<<endl; 
     } 
}//end of main bracket 

このコードは、私が欲しいものを正確に生成します。

しかし、私はこのコードを実行しようとすると、コンパイラは私に、変数テーブルの周り

スタックが破損していることをエラーが発生します。

このエラーを無視して、正しい結果が得られます。

私はこのエラーの原因を見つけようとしましたが、正しい結果が得られないので、見つからない場合、どのようにしてコンパイラが私に与えるプロンプトを無効にすることができますか?

+2

を持つべきである '無効_tmain()'有効な標準C++ではありません。 –

+1

*正確に*エラーは何を言いますか?そしてそれが誤りであれば、それをどうやって無視することができますか?代わりに警告ですか?コードをコンパイルするときや実行するときに発生しますか?どのコンパイラを使用していますか? – jalf

+2

標準C++かどうか、 'void _tmain()'が間違っています。 Microsoftの '_tmain()'を使用している場合は、 'int'を返すようにプロトタイプされています。 –

答えて

5

2つの初期化ループが間違っている - 内側のループがj<column

関連する問題