[英]Adding Integers In A Vector
好吧,我还有另一个挑战。 我有一个问题,要求我“将一组整数读入vecto
r。打印每对相邻元素的和。更改程序,以使其打印出第一个和最后一个元素的和,然后输出和倒数第二个,依此类推。”
目前,我设法使它添加不连续成对的连续数字,而是尽可能地接近它。
到目前为止,我对vectors
唯一了解的运算符是什么,我想使用的问题是: v.empty();
v.size();
v.push_back(t);
v[n];
v1 = v2;
v1 = {a,b,c...};
v1 == v2;
v1 != v2;
<
, <=
, >
, >=
这是我现在的代码:
#include <iostream>
#include <string>
#include <vector>
using std::string; using std::vector; using std::cout; using std::cin; using std::endl;
int main ()
{
vector<unsigned> numbers {5, 6, 7, 8, 9, 10, 11};
unsigned sum;
decltype(numbers.size()) count;
for (count = 0; count < numbers.size(); ++count){
sum = (numbers[count]++) + (numbers[count]);
cout << sum << " ";
}
}
所以我可以把它加5 + 6 6 + 7; 7 + 8等...但是对于每一对以及所有其他,都不能100%确定从哪里开始。 任何指导将不胜感激!
打印每对相邻元素的总和。
auto count = numbers.size();
for (auto i = 0; i < numbers.size()-1; i++)
{
std::cout << (numbers[i] + numbers[i+1]) << "\t";
}
打印出第一个和最后一个元素的总和,然后输出第二个和倒数第二个的总和,依此类推
for (auto i = 0; i < count/2; ++i)
{
std::cout << (numbers[i] + numbers[count - i -1]) << "\t";
}
注意:如果向量具有奇数,则不会在第二次打印中计算中间的一个
查看样本输出
我认为您当前的代码不适用于不同的示例。 您需要将numbers[count]++
更改为numbers[count+1]
才能起作用,并将循环的结束条件更改为size()-1
。
至于您的其他问题,如果您仅遍历向量的一半并加上v[i] + v[v.size() - i - 1]
的数目,那么您应该能够做到这一点
编辑:按照borisbn在评论中的建议,将v[v.size() - i - 1]
添加了-1
在两个循环下面,这些循环打印(1)相邻对的总和和(2)相对元素的总和。
#include <cstddef>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main ()
{
vector<unsigned> numbers {5, 6, 7, 8, 9, 10, 11};
auto N = numbers.size();
std::cout << "first part\n";
for (size_t i = 1; i < N; ++i) {
std::cout << numbers[i-1] + numbers[i] << "\n";
}
std::cout << "second part\n";
for (size_t i = 0; i < (N - 1 - i); ++i) {
std::cout << numbers[i] + numbers[N - 1 - i] << "\n";
}
// in case you have an odd number of elements
if (N % 2 == 1) std::cout << numbers[N / 2] << "\n";
}
嗨,我在VS上试过了
vector <int> num;
num.push_back(5);
num.push_back(6);
num.push_back(7);
num.push_back(8);
num.push_back(9);
num.push_back(10);
int count = 0;
for(;count < (num.size()-1);count++)
{
int sum =0;
sum = num[count] + num[count+1];
cout<<sum<<endl;
}
for(int c =0; c < (num.size()-1);c++)
{
int altrsum = num[c]+ num[(num.size()-1)-c];
cout<<altrsum<<endl;
}
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.