Зацикливание

Тема в разделе "Общие вопросы по С и С++", создана пользователем AntonKos, 24 сен 2009.

  1. AntonKos

    AntonKos Гость

    Здравствуйте.Не подскажите как поступать,если в цикле While происходит зацикливание, т.е. условия получаются выбраны так что дальнейшего продолжения не может быть.

    отрывок кода :
    Код (Text):
      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);
    В данном случае не всегда застревает,но по мере увеличения размерности матрицы происходит зацикливание.Можно ли как то вернуться на шаг назад,а именно начать рандомить элементы матрицы сначала?
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Никак. Как можно поступить, если вы неправильно указываете условие в цикле.
     
  3. AntonKos

    AntonKos Гость

    Условие верно.
    Когда остаются последние элементы в строчке,то нет дальнейшего решения.Может как то с помощью программного прерывания мона перезапустить последнее дейстивие.
     
  4. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Как вы не поймете, что пока условие верно, цикл выполняется. Не надо придумывать ничего нового, просто поменяйте условие

    Не можете поменять условие - добавьте действие, аналогичное последней итерации цикла
     
Загрузка...
Похожие Темы - Зацикливание
  1. lira89
    Ответов:
    15
    Просмотров:
    4.474
  2. lira89
    Ответов:
    1
    Просмотров:
    421

Поделиться этой страницей