Не удается найти логическую ошибку в программе C ++ - PullRequest
1 голос
/ 24 декабря 2011

Я создаю генератор расписания как проект.

Часть кода, кажется, содержит логическую ошибку.

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 Ответ

5 голосов
/ 24 декабря 2011

Два цикла инициализации неправильны - внутренний цикл должен иметь j<column

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...