2013-05-20 35 views
0

以下代码段是输入t(测试用例的数量)和学生人数n[w]g[w]。那么它应该将学生的身高作为输入并将其存储在数组stu中,其最大尺寸为MAXV100。但是此循环会一直持续下去。这可能是什么错误?程序无限输入

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循环中 – Uroc327

+0

另一件事:当内循环命中'MAXV'时,外循环保持循环。 – Barmar

回答

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

} 

这是一个无限循环。一旦t大于w,它总是会更大。如果你想让它停下来,就用增量w而不是t来代替。

更正:它不是无限的,溢出后会停止。

+2

它不是*无限*循环。它将在数十亿次后退出。 –

+0

你说得对。它会在powerflow后停止。 – gkovacs90

+1

@Nik Bougalis:是的,只要有耐心,给它一点时间... – AlexK

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

我敢肯定你的意思

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

检查其他错误太多,但是这就是为什么你编码一个无限循环

+0

+1,但是“*真的?*”是没有必要的。 – Maroun

+0

那对我来说太蠢了...... –

+0

我站着纠正了 – AlexK