关于CIN的问题,请高手帮忙看看
刚刚学C++,一道习题要求将一个整数集合分成相等的4部分,4等分依次从大到小,然后打印这4部分,我的想法是建立一个vector变量,然后随机输入一些数据到变量中,然后检测,如果变量中数据个数不是4的倍数,就提示继续输入数据,一直到能够4等分为止,然后使用sort(begin(),end())排序后分成4部分打印出来,但是第二次输入数据的语句直接不执行,这是什么情况,帮我看看,代码如下:
#include"iostream"
#include"algorithm"
#include"vector"
using std::cout; using std::sort;
using std::endl; using std::cin;
using std::vector;
int main()
{
cout<<"请输入整数到集合中:";
vector<int> set;
int x;
while(cin>>x) //随机输入一些数据,直到输入ctrl+z结束
set.push_back(x);
int n=set.size();
if(n%4!=0) //判断set中数据是否能4等分,如果不能就提示继续输入数据
{
cout<<"集合中数据不能4等分,继续输入数据:";
int y;
while(n%4!=0)
{
cin>>y; //问题就出在这里,这一句不执行,请问为什么?
n++; //这一句是执行过了的,
set.push_back(y);//如果不重新定义变量,直接用上面的x那么这一句也会执行
}
}
sort(set.begin(),set.end());
for(int i=n-1,j=0;i>=0;i--)
{
if(j%(n/4)==0)
cout<<endl<<"第"<<j/(n/4)+1<<"部分:";
cout<<set[i]<<" ";
j++;
}
cout<<endl;
return 0;
}
就是那个cin>>y;为什么不执行,知道的给我说下 谢谢