Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2010, 11:50   #1
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Восклицание С++ Найти ошибку!

Добрый вечер!!!
Помогите пожалуйста найти ошибку!!!
Кажется вылетает за пределы цикла!!!
Код:
void CPlot::Zadacha()
{	
	int i,j;
	int p,q,m=2,hod,b,k,e;
	p=1; q=0;
	hod=2;
	a[0][0]=2; a[0][1]=2; a[1][0]=2; a[1][1]=2;
	while( p==1 ){
			b++;
			for( i=0;i<n;i++ ){
				for( j=0;j<n;j++ ){printf("sdr");
					if( a[i][j]==hod ){
						//Право
						if( j<n-1 ){
							for( k=0;k<n;k++ ){ if( a[k][j+1]==0 && a[k][j]==hod ) q++; }
							//printf("%d",q);
							if( q==m ){
								if( a[k][j+1]==0 && a[k][j]==hod ) a[k][j+1]=hod+1;
							}
						}
						q=0;
						//Лево 
						if( j>0 ){
							for( k=0;k<n;k++ ){ if( a[k][j-1]==0 && a[k][j]==hod ) q++;  }
							if( q==m ){
								if( a[k][j-1]==0 && a[k][j]==hod ) a[k][j-1]=hod+1;
							}
						}
						q=0;
						//Низ
						if( i<n-1){
							for( e=0;e<n;e++ ){ if( a[i+1][e]==0 && a[i][e]==hod ) q++; }
							if( q==m ){
								if( a[i+1][e]==0 && a[i][e]==hod ) a[i+1][e]=hod+1;
							}
						}
						q=0;
						//Верх
						if( i>0 ){
							for( e=0;e<n;e++ ){ if( a[i-1][e]==0 && a[i][e]==hod ) q++; }
							if( q==m ){
								if( a[i-1][e]==0 && a[i][e]==hod ) a[i-1][e]=hod+1;
							}
						}
						q=0;
					}
				}
			}

	hod++;
	if( b>n*n ) break;
	}
}
З.Ы. длаю через классы!!!
sir.andrey вне форума Ответить с цитированием
Старый 20.10.2010, 11:56   #2
MrJenika
Форумчанин
 
Аватар для MrJenika
 
Регистрация: 07.09.2009
Сообщений: 361
По умолчанию

ну могли бы уже и саму ошибку написать, ну в смысле что компилятор говорит?
MrJenika вне форума Ответить с цитированием
Старый 20.10.2010, 11:59   #3
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Восклицание

Верхний код не правильный!!!
Вот сдесь идет зацикливание!!!
Не могу понять, почему?
Код:
void CPlot::Zadacha()
{    
    int i,j;
    int p,q,m=2,hod,b,k,e;
    p=1; q=0;
    hod=2;
    a[0][0]=2; a[0][1]=2; a[1][0]=2; a[1][1]=2;
    while( p==1 ){
            b++;
            for( i=0;i<n;i++ ){
                for( j=0;j<n;j++ ){printf("sdr");
                    if( a[i][j]==hod ){
                        //Право
                        if( j<n-1 ){
                            for( k=0;k<n;k++ ){ if( a[k][j+1]==0 && a[k][j]==hod ) q++; }
                            //printf("%d",q);
                            if( q==m ){ for( k=0;k<n;k++ ){
                                            if( a[k][j+1]==0 && a[k][j]==hod ) a[k][j+1]=hod+1;
                                        }
                            }
                        }
                        q=0;
                        //Лево 
                        if( j>0 ){
                            for( k=0;k<n;k++ ){ if( a[k][j-1]==0 && a[k][j]==hod ) q++;  }
                            if( q==m ){ for( k=0;k<n;k++ ){
                                            if( a[k][j-1]==0 && a[k][j]==hod ) a[k][j-1]=hod+1;
                                        }
                            }
                        }
                        q=0;
                        //Низ
                        if( i<n-1){
                            for( e=0;e<n;e++ ){ if( a[i+1][e]==0 && a[i][e]==hod ) q++; }
                            if( q==m ){ for( e=0;e<n;e++ ){
                                            if( a[i+1][e]==0 && a[i][e]==hod ) a[i+1][e]=hod+1;
                                        }
                            }
                        }
                        q=0;
                        //Верх
                        if( i>0 ){
                            for( e=0;e<n;e++ ){ if( a[i-1][e]==0 && a[i][e]==hod ) q++; }
                            if( q==m ){ for( e=0;e<n;e++ ){
                                            if( a[i-1][e]==0 && a[i][e]==hod ) a[i-1][e]=hod+1;
                                        }
                            }
                        }
                        q=0;
                    }
                }
            }

    hod++;
    if( b>n*n ) break;
    }
}
sir.andrey вне форума Ответить с цитированием
Старый 20.10.2010, 12:14   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
    while( p==1 ){
А менять р кто будет?
p51x вне форума Ответить с цитированием
Старый 20.10.2010, 12:17   #5
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Восклицание

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
    while( p==1 ){
А менять р кто будет?
тут и задумано, что оно меняться не будет!!!
Выход задуман таким образом!!
Цитата:
Код:
if( b>n*n ) break;
Вот полная версия программы!!!
Вложения
Тип файла: rar 237.rar (215.6 Кб, 7 просмотров)

Последний раз редактировалось Stilet; 20.10.2010 в 12:38.
sir.andrey вне форума Ответить с цитированием
Старый 20.10.2010, 13:06   #6
sir.andrey
Форумчанин
 
Регистрация: 06.12.2009
Сообщений: 380
Радость

Дошло
надо было написать
Код:
int b=0;
Но программа работает не правильно,
поэтому тему не закрывайте,
т.к. могут появиться вопросы!!!
sir.andrey вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти ошибку sergio11 Общие вопросы C/C++ 2 03.09.2010 19:29
найти ошибку sergio11 Паскаль, Turbo Pascal, PascalABC.NET 2 19.05.2010 01:22
Найти ошибку stanBRY Общие вопросы C/C++ 17 29.03.2010 23:16