A
AntonKos
Здравствуйте.Не подскажите как поступать,если в цикле While происходит зацикливание, т.е. условия получаются выбраны так что дальнейшего продолжения не может быть.
отрывок кода :
В данном случае не всегда застревает,но по мере увеличения размерности матрицы происходит зацикливание.Можно ли как то вернуться на шаг назад,а именно начать рандомить элементы матрицы сначала?
отрывок кода :
Код:
for (k=1;k<10;k++)
{
A[1][k]=random(10);
while (A[1][k]==0||A[1][k]==A[1][k-1]||A[1][k]==A[1][k-2]||A[1][k]==A[1][k-3]||A[1][k]==A[1][k-4]||A[1][k]==A[1][k-5]||A[1][k]==A[1][k-6]||A[1][k]==A[1][k-7]||A[1][k]==A[1][k-8])
{
A[1][k]=random(10);
}
gotoxy(X+delX,Y+delY);
printf("%d",A[1][k]);
X=X+2;
gotoxy(X+delX,Y+delY);
}
X=1;
Y=Y+2;
gotoxy(X+delY,Y+delY);
for (k=1;k<10;k++)
{
A[2][k]=random(10);
if (k<4)
{
while (A[2][k]==0||A[2][k]==A[1][1]||A[2][k]==A[1][2]||A[2][k]==A[1][3]||A[2][k]==A[2][k-1]||A[2][k]==A[2][k-2]||A[2][k]==A[2][k-3]||A[2][k]==A[2][k-4]||A[2][k]==A[2][k-5]||A[2][k]==A[2][k-6]||A[2][k]==A[2][k-7]||A[2][k]==A[2][k-8])
{
A[2][k]=random(10);
}
}
if (k>=4&&k<7)
{
while (A[2][k]==0||A[2][k]==A[1][4]||A[2][k]==A[1][5]||A[2][k]==A[1][6]||A[2][k]==A[2][k-1]||A[2][k]==A[2][k-2]||A[2][k]==A[2][k-3]||A[2][k]==A[2][k-4]||A[2][k]==A[2][k-5]||A[2][k]==A[2][k-6]||A[2][k]==A[2][k-7]||A[2][k]==A[2][k-8])
{
A[2][k]=random(10);
}
}
if (k>=7&&k<10)
{
while (A[2][k]==0||A[2][k]==A[1][7]||A[2][k]==A[1][8]||A[2][k]==A[1][9]||A[2][k]==A[2][k-1]||A[2][k]==A[2][k-2]||A[2][k]==A[2][k-3]||A[2][k]==A[2][k-4]||A[2][k]==A[2][k-5]||A[2][k]==A[2][k-6]||A[2][k]==A[2][k-7]||A[2][k]==A[2][k-8])
{
A[2][k]=random(10);
}
}
gotoxy(X+delX,Y+delY);
printf("%d",A[2][k]);
X=X+2;
gotoxy(X+delX,Y+delY);
}
X=1;
Y=Y+2;
gotoxy(X+delY,Y+delY);
В данном случае не всегда застревает,но по мере увеличения размерности матрицы происходит зацикливание.Можно ли как то вернуться на шаг назад,а именно начать рандомить элементы матрицы сначала?