请教大家个问题
读一组整数到vector对象,计算并输出每对相邻元素的和。如果读入元素个数
为奇数,则提示用户最后一个元素没有求和,并输出其值。然后修改程序:头
尾元素两两配对(第一个和最后一个,第二个和倒数第二个,以此类推),计
算每对元素的和,并输出。
我写的编译都可以过,就是结果有问题,有高手能帮忙看看吗,谢谢!!#include<iostream>
#include<vector>
using namespace std;
int main()
{
 
vector<int> v1;
int value,len1,sum;
len1=v1.size();//len1接收容器长度
cout<<"请输入一组整数:"<<endl;
while(cin>>value)//依次将整数输入容器
v1.push_back(value);
if(len1==0)//无输入,中断
{
cout<<"无整数输入?"<<endl;
return -1;
}

for(vector<int>::size_type ix=0;ix<len1-1;ix+=2)
{
sum=v1[ix]+v1[ix+1];
cout<<"容器中各配对元素的和为:"<<sum<<endl;
}
if(len1%2==0)//容器元素个数为奇数,输出最后一个元素
cout<<"最后一个元素没有求值,它是"<<v1[len1-1]<<endl;
return 0;}

解决方案 »

  1.   


    #include <iostream> 
    #include <vector> 
    using namespace std; 
    int main() 
    {  vector <int> v1; 
    int value,len1,sum; 
    len1=v1.size();//len1接收容器长度 
    cout <<"请输入一组整数:" <<endl; 
    while(cin>>value)//依次将整数输入容器 
    v1.push_back(value); 
    len1 = v1.size();   //少了这句,后面len1一直是0,没法判断了
    if(len1==0)//无输入,中断 

    cout <<"无整数输入?" <<endl; 
    return -1; 
    }  for(vector <int>::size_type ix=0;ix < len1-1; ix+=2) 

    sum = v1[ix]+v1[ix+1]; 
    cout <<"容器中各配对元素的和为:" <<sum <<endl; 
    }  if(len1%2==0)//容器元素个数为奇数,输出最后一个元素 
    cout <<"最后一个元素没有求值,它是" <<v1[len1-1] <<endl; 
    return 0; } 
      

  2.   

    len1=v1.size();这句写在  
      while(cin>>value)//依次将整数输入容器 
            v1.push_back(value); 的后面
    因为你已经改变了该vector的size;
    所以要在改变后在调用v1.size();