首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ primer上习题,求更好的解决方法

2012-05-01 
C++ primer上习题,求更好的解决办法。有关于vector容器的问题,我刚看。下面是问题的具体描述。读一组数到vect

C++ primer上习题,求更好的解决办法。
有关于vector容器的问题,我刚看。下面是问题的具体描述。
读一组数到vector对象,计算并输出每对相邻元素的和。如果读入元素的个数为奇数,则提示用户最后一个元素没有求和,并输出其值。
下面是我自己的代码。感觉太麻烦了,希望有好的意见,或者好的代码。

C/C++ code
#include<iostream>#include<string>#include<vector>using namespace std;void main(){       int temp;    int sum;    vector<int> ivec;    while(cin>>temp)    {        ivec.push_back(temp);        if(temp==-1)        break;    }    if(ivec.size()%2==0)    {        //cout<<"最后一个元素未被求和"<<endl;        //cout<<"输出的最后1个值即为最后1个元素的值"<<endl;        cout<<"相邻两元素的值为:"<<endl;        for(vector<int>::size_type ix=0;ix!=ivec.size();ix+=2)        {        sum=0;        sum=ivec[ix]+ivec[ix+1];        cout<<sum<<" ";        }    }    else    {      cout<<"最后一个元素未被求和"<<endl;      cout<<"输出的最后1个值即为最后1个元素的值"<<endl;      cout<<"相邻两元素的值为:"<<endl;      for(vector<int>::size_type ix=0;ix!=ivec.size()-1;ix+=2)        {        sum=0;        sum=ivec[ix]+ivec[ix+1];        cout<<sum<<" ";        }      cout<<ivec[ivec.size()-1];    }            cout<<endl;}

就是这样,求指教了

[解决办法]
for(vector<int>::size_type ix=0;ix!=ivec.size()-1;ix+=2)
{
sum=0;
sum=ivec[ix]+ivec[ix+1];
cout<<sum<<" ";
}

和上面部分的 这个求和代码很重合.
可以修改成一个,如下:
for(vector<int>::size_type ix=0;ix<ivec.size();ix+=2)
{
sum=0;
sum=ivec[ix]+ivec[ix+1];
cout<<sum<<" ";
}
可以先把这个计算出来.然后在 判断 元素个数是否是计数.然后ifelse里面分别再输出 那些文字等不同点
[解决办法]
C/C++ code
#include<iostream>#include<vector>using namespace std;void main(){       int temp;    vector<int> ivec;    vector<int>::size_type ix;    while(cin>>temp)    {        if(temp==-1)        //  判断放在前面,避免将-1存入ivec中。            break;        ivec.push_back(temp);    }    if (ivec.size()>0)    {        cout<<endl<<"相邻两元素的值为:"<<endl;        for (ix=0;ix<ivec.size()-1;ix+=2)            cout<<ivec[ix]+ivec[ix+1]<<" ";        if (ix<ivec.size())            cout<<endl<<"最后一个元素未被求和,其值为:"<<ivec[ix]<<endl;    }}
[解决办法]
C/C++ code
#include<iostream>#include<string>#include<vector>using namespace std;void main(){       int temp;    int sum;    vector<int> ivec;    while(cin>>temp)    {        if(temp==-1)            break;        ivec.push_back(temp);    }    cout<<"相邻两元素的值为:"<<endl;    for(vector<int>::size_type ix=0;ix < ivec.size()-1;ix+=2)    {        sum=0;        sum=ivec[ix]+ivec[ix+1];        cout<<sum<<" ";    }        if(ivec.size()%2 != 0)    {        cout<<"最后一个元素未被求和"<<endl;        cout<<"输出的最后1个值即为最后1个元素的值"<<endl;        cout<<ivec[ivec.size()-1];    }    cout<<endl;} 

热点排行