Всем доброго времени суток.Нужна помощь с двумя флагами лабиринта,один из которых отвечает за факт проходимости/непроходимости, а другой - за факт того,что мы пришли к выходу.То,что должно искать свободные и существующие клетки и заполнять их уже написано,осталось только выйти либо узнать,что выхода нет.Код цикла,который за всё это отвечает
do
{
numWave++;
flag=-1;
// if ((flagend!=1)&&(flag!=0))
{
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
if (a[i][j]==numWave)
{
//проверка на существование и проходимость
if ((j>=1)&&(a[i][j-1]==0))
{
a[i][j-1]=numWave+1; flag=1;
}
if ((j+1<n)&&(a[i][j+1]==0))
{
a[i][j+1]=numWave+1; flag=1;
}
if ((i>1)&&(a[i-1][j]==0))
{
a[i-1][j]=numWave+1; flag=1;
}
if ((i+1<n)&&(a[i+1][j]==0))
{
a[i+1][j]=numWave+1; flag=1;
}
if (a[i][j]==pend) //если мы достигли выхода
{
flagend=1;
break;
}
} //if
} //for j
//если флаг проходимости не был достигнут
if (flag!=1) flag=-1;
// если мы достигли выхода
if (flagend==1) break;
} //for i
} //if flagend!=1
if (flagend==1) break;
}
while ((flagend!=1)||(flag!=-1));
numWave-номер волны,flag-отвечает за проходимость,flagend-отвечает за факт достижения выхода,pend==-3;-точка конца,т.е. которую нужно достичь.
При while ((flagend!=1) || (flag!=-1)); бесконечный цикл,а при while ((flagend!=1) && (flag!=-1)); заполняется ВСЯ матрица номерами волн,хотя мне нужно,чтобы он заполнял только до клетки выхода,которая находится где -то около середины лабиринта.Лабиринт один и тот же пока (10x10) если нужно ,могу написать его.