2014-04-11 6 views
2

Моя программа должна принимать число от пользовательского ввода, определять, является ли оно простым, а затем, если это не так, вывести коэффициенты введенного число, 5 к строке. 5 в линейной части, где все идет с haywire, цикл, который я написал, должен работать нормально, насколько я могу судить, однако независимо от того, как сильно я его изменяю, он делает одну из двух вещей: 1) бесконечно с новыми линии или первого фактора, или 2) выводит строку с 5 каждым фактором. Вот код:Не могу понять, почему этот цикл форматирования вывода бесконечен

else 
     { 
      cout << "\nNumber is not prime, it's factors are:\n"; 
      for (int x = 2; x < num; x++) 
      { 

       factor=num%x; 
       if (factor==0) 
       { 
        int t=0; 
        cout << x << "\t"; 
        t++; 

        for (int t; t <= 5; t++) // THE TROUBLE LOOP 
         { 
          if(t>=5) 
         { 
         t=0; 
         cout << endl; 
         } 
         } 
       } 

      } 
     } 
+0

Пожалуйста, не засоряйте апостроф: Правильная грамматика «его факторы:» – wallyk

ответ

7

Заменить декларацию t в цикле, так как вы объявили t до цикла:

for(; t <= 5; t++) 

С int t в объявлении петли переопределения t как неинициализированные переменная, которая будет иметь значение для мусора.

Вне этой проблемы ваша петля бесконечна, так как вы будете сбросить t до 0 всякий раз, когда она равна 5.

+0

все еще идет бесконечным после строительства и компиляции. – user3525452

+0

@ user3525452: Как я уже упоминал в конце своего ответа, в вашей логике есть что-то не так, как всегда будет бесконечно. Если бы вы могли уточнить, что он должен делать, я могу помочь больше. – GWW

+0

проходит первый цикл, и проверяет номер ввода как простой или нет, а затем выдает коэффициенты, если число не является простым, цикл, который бесконечно бесконечен, просто должен перейти в новую строку после того, как будут указаны 5 факторов вывод. – user3525452

1

В течение цикла изменить

int t 

к

t=0 

это

for(int t,t<=5,t++) 

int t часть, в частности, что вызывает проблему.

+1

Вы повторяете ответ GWW. Я не вижу никакого дополнительного контента. – wallyk

+0

Да, ответ не был отправлен, поскольку я печатал – RDizzl3

0

@GGW

Или это:

int t = 0; 
    //some code 
    for(t; t <= 5; t++) 
    //more code 
+0

Все еще идет бесконечно после сборки и компиляции. – user3525452

+0

Даже если вы положите «int t = 0;» вне цикла? like: else { int t = 0; // Код для (t; t <= 5; t ++) // Код – minimen

Смежные вопросы