Rithish Áj Ответов: 2

В этом коде C++ цикл не выполняется более одного раза plz направьте меня в этом


Это код он не будет выполняться более одного раза plz направьте меня в этом


int y=n,z=0,p;
    int fp;
    int q=0;
     while(q<y)
    {
cout<<"\n SUBSTITUTION TABLE FOR TEACHER:"<<name[pos[q]];
    for(int i=0;i<8;i++)
    {   z=0;
        fp=0;
        p=pos[q];

        if(period[p][i]=="2")
          {
               for(int j=0;j<x;j++)
                if(period[j][i]=="3")
                  {
                  subt[z]=name[j];
                   z++;

                  }
          }
        else
           if(period[p][i]=="4")
           {
              for(int j=0;j<x;j++)
                if(period[j][i]=="5")
                  {
                  subt[z]=name[j];
                   z++;

                  }
           }
           else
              if(period[p][i]=="1")
              {
                 for(int j=0;j<x;j++)
                if(period[j][i]=="0")
                  {
                  subt[z]=name[j];
                   z++;

                  }

              }

      fp=rand()%z+0;
 cout<<"\n period:"<<i+1<<":"<<subt[fp];

    }
    q++;
    }

[edit]добавлен блок кода-OriginalGriff [/edit]

Что я уже пробовал:

Я перепробовал все, в этом коде нет ошибок, он просто не выполняется более одного раза, он выполняется только один раз...

[no name]

Узнайте, как использовать отладчик для отладки вашего кода.

phil.o

Пожалуйста, отформатируйте код.

Richard MacCutchan

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

2 Ответов

Рейтинг:
2

OriginalGriff

Без остальной части вашего кода мы мало что можем сделать: мы понятия не имеем, что есть или должно быть в вашем коде. pos или name, или даже любая идея, как они объявлены!
В результате мы даже не можем запустить ваш фрагмент кода в тех же условиях, что и вы, поэтому мы не можем протестировать ваш код и сказать: "сделай это".

К счастью, в вашем распоряжении есть инструмент, а это значит, что вы можете!
Visual Studio включает в себя отладчик, который позволяет вам полностью контролировать происходящее, просматривать содержимое переменных во время выполнения кода и даже выполнять его по одной строке за раз, чтобы точно увидеть, что происходит.

Так что все будет зависеть от вас.
Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что именно то, что вы ожидали, произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас-вам пора освоить новый (и очень, очень полезный) навык: отладку!


Рейтинг:
1

Patrice T

Мое лучшее предположение таково n=1, вы единственный, кто может проверить это с помощью отладчика.

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.

[Обновление]
вы можете начать с того, что оснастите свой код контрольными точками:
В конце цикла выведите значения q и y.


Rithish Áj

Могу ли я отправить полный его код????

Patrice T

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

[no name]

Мы не являемся службой "отладьте мое домашнее задание для меня". Обучение отладке кода не является необязательным навыком,который вы можете не изучать.

Rithish Áj

Извините парня я буду лучше использовать этот сайт