哪位朋友邦我做一个c++ Primier上的一道题,谢谢

紫色动力 2009-05-20 10:19:56
这是c++Primer上的一道题,我不会,请高手帮我写一下代码,谢谢:
习题 3.13:读一组整数到vector对象,计算并输出每对相信元素的和。如果读入元素个数为奇数,则提示用户最后一个元素没有求和,并输出其值。然后修改程序:头尾元素两两配对,计算每对元素的和,并输出。
...全文
258 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sou2012 2009-05-26
  • 打赏
  • 举报
回复
UP!!
紫色动力 2009-05-25
  • 打赏
  • 举报
回复
谢谢,各位,呵呵!!!
dl591944556 2009-05-25
  • 打赏
  • 举报
回复
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> ivec;
int ival;
//读入数据到vector 对象
cout << "Enter numbers:" << endl;
while (cin>>ival)
ivec.push_back(ival);
//计算首尾配对元素的和并输出
if (ivec.size() == 0) {
cout << "No element?!" << endl;
return -1;

}
cout << "Sum of each pair of counterpart elements in the vector:"
<< endl;
vector<int>::size_type cnt = 0;
for (vector<int>::size_type first = 0, last = ivec.size() - 1;
first < last; ++first, --last) {
cout << ivec[first] + ivec[last] << "\t";
++cnt;
if ( cnt % 6 == 0) //每行输出6 个和
cout << endl;
}
if (first == last) //提示居中元素没有求和
cout << endl
<< "The center element is not been summed "
<< "and its value is "
<< ivec[first] << endl;
return 0;
}
lizhi110110110 2009-05-21
  • 打赏
  • 举报
回复
#include<iostream>
#include<vector>
using namespace std;

int main()
{
vector<int> ivec;
int ival;

cout<<"enter numberS(ctrl + z to end): "<<endl;
while(cin>>ival)
ivec.push_back(ival);

if(ivec.size() == 0)
{
cout<<"no element?"<<endl;
return -1;
}

cout<<"Sum of each pair of counterpart elements in the vector:"
<<endl;
vector<int>::size_type cnt = 0;
vector<int>::size_type first,last;
for(first = 0,last = ivec.size()-1;
first<last; ++first,--last)
{
cout<<ivec[first] + ivec[last]<<"\t";
++cnt;
if(cnt%6 == 0)
cout<<endl;
}
if(first = last)
cout<<endl
<<"the center element is not been summed"
<<"and its value is"
<<ivec[first]<<endl;
return 0;
}
改后的
Jalien 2009-05-21
  • 打赏
  • 举报
回复
最近CSDN作业题不是一般的多。。。。
ZLL5267 2009-05-21
  • 打赏
  • 举报
回复
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;

int main(){
cout<<"输入数组的各个元素"<<endl;
istream_iterator<int> iint(cin);
istream_iterator<int> end_iint;
vector<int> vec;
while ( iint != end_iint ){
vec.push_back(*iint++);
}
cout<<"这个数字各个元素是"<<endl;
for ( vector<int>::iterator iter = vec.begin(); iter != vec.end(); iter++){
cout<<*iter<<ends;
}
cout<<endl;
cout<<"对相对的元素求和为"<<endl;
for ( vector<int>::iterator iter = vec.begin(); iter != vec.end();){
vector<int>::iterator iter2 = iter + 1;
if ( iter2 == vec.end()){
cout<<"最后元素没有求和";
cout<<*iter<<endl;
break;
}
cout<<*iter + *(iter2)<<endl;
iter += 2;
}
cout<<"首尾求和为:"<<endl;
for ( vector<int>::iterator iter1 = vec.begin(),iter2 = vec.end()-1; iter1 <= iter2 ;){
if (iter1 == iter2){
cout<<"中间元素没有求和";
cout<<*iter1<<endl;
break;
}
cout<<*iter1 + *iter2<<endl;
iter1++;
iter2--;

}
system("pause");
}
凑个,顺便练习一下,都快忘光了
lizhi110110110 2009-05-21
  • 打赏
  • 举报
回复

#include<iostream>
#include<vector>
using namespace std;

int main()
{
voector<int>ivec;
int ival;

cout<<"enter numbers(Ctrl+Z to end):"<<endl;
while(cin>>ival)
ivec.push_back(ival);
if(ivec.size()==0)
{
cout<<"no element?"<<endl;
return -1;
}
cout<<"Sum of each pair of adjacent elements in the vector:"<<endl;
for(vector<int>::size_type ix = 0; ix<ivec.size()-1; ix=ix+2)
{
cout<<ivec[ix] + ivec[ix+1]<<"\t";
if((ix+1)%6==0)
cout<<endl;
}
if(ivec.size()%2 !=0)
{
cout<<endl<<"the last eleement is not been summed"
<<"and its value is"<<ivec[ivec.size()-1]<<endl;

}
return 0;

}
hjjdebug 2009-05-21
  • 打赏
  • 举报
回复
csdn 热心人还是很多滴!
amossavez 2009-05-21
  • 打赏
  • 举报
回复
留个邮箱,我把哪本书的答案发给你!!!
tsocpp 2009-05-21
  • 打赏
  • 举报
回复
热心人真多
这题本来就不是很难
还有这么多人都已经给出自己的解答了
maosher 2009-05-21
  • 打赏
  • 举报
回复

#include "stdafx.h"
#include <vector>

using namespace std;

int main()
{

vector<int> intVec;
vector<int>::iterator intIter;
std:cout<<"输入数据:"<<endl;

int inputValue;
while (std::cin>>inputValue)
{
intVec.push_back(inputValue);
}

if (intVec.empty())
{
std::cout<<"没有数据"<<endl;
return -1;
}

for (intIter = intVec.begin(); intIter+1 < intVec.end()-1; intIter+=2 )
{
std::cout<<*intIter+ *(intIter+1<<endl;
}

if (0 != intVec.size()%2)
{
std::cout<<"没有计算第" << intVec.size() <<endl;
}

system("pause");
return 0;
}
adventurelw 2009-05-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Purplepower 的回复:]
adventurelw:你好,我觉得你想的有点简单了。比如只输入一个元素怎么计算?奇数个元素和偶数个元素的处理又怎么做呢?我现在想不清楚的是这个,而不是怎么求和。这个让我很头痛。
[/Quote]
是这样的
你对保存在vector中的数据进行读取时,先决条件就是不能越界,比如只有三个数据,那么你写出vector<type> ivec(3);ivec[4]这种
读取就是错误的,所以,不管你用下标读取(ivec[4]这种),还是可能在后边讲的迭代器方法,都要有不越界的限定。
你可以知道如何获取ivec的大小吧;那么下标的可能取值,我们能够明确:是在0到ivec大小减一之间,这样的话,如果只有一个元素,你不可能进行一次运算的。
taodm 2009-05-20
  • 打赏
  • 举报
回复
去买本配套的习题解答吧。看过解答再不会的再来问
lingyin55 2009-05-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Purplepower 的回复:]
adventurelw:你好,我觉得你想的有点简单了。比如只输入一个元素怎么计算?奇数个元素和偶数个元素的处理又怎么做呢?我现在想不清楚的是这个,而不是怎么求和。这个让我很头痛。
[/Quote]




#include <iostream>

#include <vector>

using std::cin;

using std::cout;

using std::endl;

using std::vector;

int main()

{

cout << "请输入一组数:" << endl;



//把数输入到数组

int num;

vector<int> nums;

while ( cin >> num )

nums.push_back(num);



//如果没输入

if ( nums.size() == 0 )

{

cout << "没有输入!" << endl;

return -1;

}



//配对相加

cout << "相邻元素配对相加的结果为:" << endl;

vector<int>::iterator iter = nums.begin();

for ( ; iter < nums.end() - 1; iter = iter + 2 )

cout << *iter + *(iter+1) << " ";



//单数个提示

if ( nums.size() % 2 != 0 )

{

iter = nums.end() - 1;

cout << "\n最后一个元素" << *iter << " 没有参与计算" << endl;

return 0;

}

else

{

cout << endl;

return 0;

}

}

紫色动力 2009-05-20
  • 打赏
  • 举报
回复
adventurelw:你好,我觉得你想的有点简单了。比如只输入一个元素怎么计算?奇数个元素和偶数个元素的处理又怎么做呢?我现在想不清楚的是这个,而不是怎么求和。这个让我很头痛。
liliangbao 2009-05-20
  • 打赏
  • 举报
回复
又是作业题~
lingyin55 2009-05-20
  • 打赏
  • 举报
回复
楼主先说出你的问题,是不知道怎么用vector吗?
adventurelw 2009-05-20
  • 打赏
  • 举报
回复
不管是自学还是作业
自己先想一下吧
很简单的
输入数据到vector对象中,那么显然先要建一个vector对象,对象元素类型是你输入的数据的类型,如果不知道怎么定义对象,那么看书
输入一组数据,看看书中有没有介绍vector的添加新元素的方法的,就用那个方法一个一个添加好了,输入可以用一个循环解决
然后判断容器中的元素个数是不是奇数,奇数如何判断,你知道他不能被2整除就行了。
是奇数的话,那就求第一个元素到倒数第一个元素两两配对的和,求和会吧,配对:第一个元素和第二个元素配对,如何读取vector中的元素,麻烦看书。
首尾配对并没有太大差异,无非是从两端往中间收缩罢了。
祝楼主成功。
ltc_mouse 2009-05-20
  • 打赏
  • 举报
回复
楼主对这个题中的哪部分不会呢? 也许很有必要把书的这一章再学习一遍~~
紫色动力 2009-05-20
  • 打赏
  • 举报
回复
想好好学习下这本书,呵呵,把题 都 好好看看。才发现什么都不会啊!
加载更多回复(1)

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧