2

わかりました、私は別の課題があります。「整数のセットをrに読み込みvectoます。隣接する要素の各ペアの合計を出力します。最初と最後の要素の合計を出力し、その後に合計を出力するようにプログラムを変更します。 2番目と最後から2番目など。」

現在、私はそれを何とかして、正確にペアではなく、できるだけ近くに連続した番号を追加することができました。

私がこれまでに学んだ唯一の演算子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%わかりません。どんな指導も大歓迎です!

4

4 に答える 4

1

隣接する要素の各ペアの合計を出力します。

auto count = numbers.size();
for (auto i = 0; i < numbers.size()-1; i++)
{
    std::cout << (numbers[i] + numbers[i+1]) << "\t";
}

最初と最後の要素の合計を出力し、次に2番目と最後から2番目の要素の合計を出力します。

for (auto i = 0; i < count/2; ++i) 
{       
   std::cout << (numbers[i] + numbers[count - i -1]) << "\t";     
}

注:ベクトルの数が奇数の場合、真ん中のベクトルは2番目の印刷では計算されません

サンプル出力を参照してください

于 2013-01-11T07:15:49.653 に答える
0

現在のコードは、さまざまな例では機能しないと思います。numbers[count]++それが機能するためにはに変更する必要がありnumbers[count+1]、ループの終了条件をに変更する必要がありますsize()-1

他の質問については、ベクトルの半分をループして、次の数を追加するだけで実行できるはずです。v[i] + v[v.size() - i - 1]

編集:コメントでborisbnによって提案されたように追加-1されましたv[v.size() - i - 1]

于 2013-01-11T07:01:00.940 に答える
0

(1)隣接するペアの合計と(2)反対の要素の合計を出力する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での出力

于 2013-01-11T07:56:51.597 に答える
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;
  }

お役に立てれば。

于 2013-01-11T08:49:14.683 に答える