在C ++程序中找不到逻辑错误

时间:2011-12-24 11:32:25

标签: c++ compiler-construction

我正在制作一个时间表生成器。

部分代码似乎有逻辑错误。

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

此代码生成我想要的内容。

但是当我尝试运行此代码时,编译器会给出错误

  

变量表周围的堆栈已损坏。

我选择忽略此错误,然后程序会给我正确的结果。

我试图找到此错误的来源,但我不能在最重要的是我得到正确的结果,所以如果找不到,我怎么能禁用编译器给我的提示。

1 个答案:

答案 0 :(得分:5)

两个初始化循环是错误的 - 内循环应该有j<column