2013-05-20 3 views
0

Следующий сегмент кода должен принимать вход t (количество тестовых примеров) и количество студентов n[w] и номер g[w]. то это должно быть высота студентов в качестве входных данных и хранить их в массиве stu, максимальный размер которого MAXV равен 100. Но этот цикл продолжается вечно. Что может быть неправильно в этом?Программа принимает вход бесконечно

int t; 
cin>>t; 
std::vector<int> n(t); 
std::vector<int> g(t); 
int m =0; 
int stu[MAXV]; 
for(int w=0;w<t;t++) 
{ 
    cin>>n[w]>>g[w]; 
    for(int i=m;i<n[w] && i < MAXV;i++) 
    { 
     cin>>stu[i]; 
     ++m; 
    } 
} 
+1

Не * бесконечно *, но он будет принимать вход несколько миллиард раз ... Вы устанавливаете 'w' в 0, но вы увеличиваете' t'. –

+1

Возможно, вы имели в виду 'w ++' вместо' t ++ 'в первом for-loop – Uroc327

+0

Другое дело: когда внутренний цикл попадает в« MAXV », внешний цикл продолжает циклироваться. – Barmar

ответ

2
for(int w=0;w<t;t++) 
{ 

} 

Это бесконечный цикл. Как только t будет больше w, оно будет всегда больше. Включите w вместо t, если вы хотите, чтобы он остановился.

Исправление: оно не бесконечно, после переполнения оно остановится.

+2

Это не бесконечный цикл *. Он выйдет через несколько миллиардов раз. –

+0

Вы правы. Он остановится после переполнения. – gkovacs90

+1

@ Ник Бугалис: Да, просто будьте терпеливы, дайте ему немного времени ... – AlexK

2
for(int w=0;w<t;t++) , really ? 

Я уверен, что вы имели в виду

for(int w=0;w<t;w++) 

Проверьте наличие других ошибок тоже, но вот почему вы закодированы бесконечный цикл

+0

+1, но это «* действительно? *» Не нужно. – Maroun

+0

Это было так глупо от меня ... –

+0

Я стою исправленный – AlexK

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