C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

配列内の偶数と奇数のインデックス付き要素の絶対差(C ++)?


ここでは、配列内の奇数と偶数のインデックス付き要素の絶対差を取得する方法を説明します。絶対差は、1つのペアの差が負の場合、絶対値が取られることを示します。たとえば、番号を{1、2、3、4、5、6、7、8、9}とします。したがって、偶数の位置の要素は1、3、5、7、9(0から開始)であり、奇数の場所の要素は2、4、6、8です。したがって、偶数の位置のデータの差は| 1〜3|です。 =2、次に| 2-5 | =3、| 3-7 | =4および|4-9| =5同様に、奇数の場所の差は4になります。

アルゴリズム

offEvenDiff(arr、n)

begin
   even := 0
   odd := 0
   for i := 0 to n-1, do
      if i is even, then
         even := |even – arr[i]|
      else
         odd := |odd – arr[i]|
   done
   return (odd,even)
end

#include<iostream>
#include<cmath>
using namespace std;
void oddEvenDiff(int arr[], int n, int &o, int &e) {
   int even = 0;
   int odd = 0;
   for (int i = 0; i < n; i++) {
      if (i % 2 == 0) {
         even = abs(even - arr[i]); //get the even difference
      } else {
         odd = abs(odd - arr[i]);
      }
   }
   e = even;
   o = odd;
}
main() {
   int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
   int n = sizeof(arr) / sizeof(arr[0]);
   int odd, even;
   oddEvenDiff(arr, n, odd, even);
   cout << "The odd and even differences are: " << odd << " and " << even;
}

出力

The odd and even differences are: 4 and 5

  1. 配列内のすべてのペアワイズ連続要素の絶対差(C ++)?

    この問題では、配列内の要素の各ペアの要素間の絶対差を取得する方法を確認します。 n個の要素がある場合、結果の配列にはn-1個の要素が含まれます。要素が{8、5、4、3}であると仮定します。結果は|8-5|になります=3、次に| 5-4 | =1、| 4-3 |=1。 アルゴリズム pairDiff(arr、n) begin    res := an array to hold results    for i in range 0 to n-2, do       res[i] := |res[i] – res

  2. C++でのstd::vectorとstd::arrayの違い

    ベクトルと配列の違いは次のとおりです- Vectorは、インデックスベースではなく要素を格納するためのシーケンシャルコンテナです。 配列は、同じタイプの要素の固定サイズの順次コレクションを格納し、インデックスベースです。 ベクトルは本質的に動的であるため、要素を挿入するとサイズが大きくなります。 アレイは固定サイズであるため、一度初期化するとサイズを変更できません。 ベクターはより多くのメモリを占有します。 配列はメモリ効率の高いデータ構造です。 ベクターは要素へのアクセスに時間がかかります。 要素は連続したメモリ割り当てに配置されるため、場所に関係なく一定時間で要素にアクセスできます。