2011-12-24 45 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++。 – 2011-12-24 11:38:01

+1

这个错误说的究竟是什么?如果这是一个错误,你怎么能忽略它?相反,这是警告吗?当你编译代码或者你运行它时会发生吗?你正在使用哪种编译器? – jalf 2011-12-24 11:42:38

+2

标准C++与否,'void _tmain()'是错误的。如果你使用微软的'_tmain()',它的原型就是返回一个'int'。 – 2011-12-24 11:42:44

回答

5

两个初始化循环是不正确的 - 内环应具有j<column