在向量中添加整数

时间:2013-01-11 06:53:09

标签: c++ vector integer

好的,我有另一个挑战。我有一个问题要求我“将一组整数读入vecto r。打印每对相邻元素的总和。更改程序,使其打印出第一个和最后一个元素的总和,然后是第二个和倒数第二个的总和,依此类推。“

目前我已设法让它添加连续数字,而不是完全成对,但尽可能接近我。

我迄今为止为vectors学到的唯一操作符,以及我希望我使用的问题是:v.empty(); v.size(); v.push_back(t); v[n]; {{ 1}} v1 = v2; v1 = {a,b,c...}; v1 == v2; v1 != v2;<<=>

这是我现在的代码:

>=

所以我可以加5 + 6; 6 + 7; 7 + 8等...但是对于每一对和所有其余的,不是100%确定从哪里开始。任何指导将不胜感激!

4 个答案:

答案 0 :(得分:1)

打印每对相邻元素的总和。

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";     
}

注意:如果vector具有奇数,则在第二次打印中不会计算中间值

请参阅sample输出

答案 1 :(得分:0)

我认为您当前的代码不适用于不同的示例。您需要将numbers[count]++更改为numbers[count+1]才能生效,并将循环的结束条件更改为size()-1

至于你的另一个问题,你应该能够做到这一点,如果你只循环一半的向量并添加v[i] + v[v.size() - i - 1]

的数字

修改:按照borisbn在评论中的建议将-1添加到v[v.size() - i - 1]

答案 2 :(得分:0)

下面两个循环打印(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";

}

LiveWorkSpace

上的输出

答案 3 :(得分:0)

您好我在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;
  }

希望这有帮助。