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

C ++で、iが偶数の場合はarr [i]> =arr [j]、iが奇数の場合はarr [i] <=arr [j]、j

奇数と偶数の整数値を含む整数配列が与えられます。タスクは、インデックスarr [i]の値が偶数である必要があり、arr [i]の値が偶数であるという条件に基づいて、arr[i]がarr[j]以上になるように配列を再配置することです。が奇数の場合、arr[i]はarr[j]以下である必要があります。

このためのさまざまな入出力シナリオを見てみましょう-

入力 − int arr [] ={5、9、10、12、32、35、67、89}

出力 −要素を再配置した後の配列は次のとおりです。1232 10 35 9 67 5 89

説明 −奇数と偶数の整数の配列が与えられます。ここで、arr[i]位置からarr[j]位置へのトラバースを開始し、arr [i]がまだであるかどうかを確認し、arr[i]がarr[j]およびIFarr[i]よりも大きいことを確認します。奇数の場合は、arr[i]がarr[j]以下であることを確認してください。

入力 − int arr [] ={4、5、1、2、9、10}

出力 −要素を再配置した後の配列は次のとおりです。45 2 9 1 10

説明 −奇数と偶数の整数の配列が与えられます。ここで、arr[i]位置からarr[j]位置へのトラバースを開始し、arr [i]がまだであるかどうかを確認し、arr[i]がarr[j]およびIFarr[i]よりも大きいことを確認します。奇数の場合は、arr[i]がarr[j]以下であることを確認してください。

以下のプログラムで使用されているアプローチは次のとおりです

  • 整数型の配列を宣言します。配列のサイズをsize=sizeof(arr)/ sizeof(arr [0])として計算します。

  • 関数をarray_rearrange(arr、size)として呼び出し、データをパラメーターとして渡します。

    • 変数を偶数として宣言し、それを偶数=サイズ/ 2に設定し、別の変数を奇数として宣言し、サイズ-偶数に設定します。

    • 変数をtempとして宣言し、奇数に設定します-1.arr_1[]のサイズでarray_2[]を宣言します。

    • ループFORiを0に開始し、iをサイズ未満にします。ループ内で、arr_2[i]からarr[i]に設定します。

    • 関数をsort(arr_2、arr_2 + size)として呼び出します。

    • iがサイズより小さくなるまでiから0までループFORを開始します。ループ内で、arr[i]をarr_2[temp]に設定し、変数tempを1だけデクリメントします。

    • tempを奇数に設定します。 iからiまでのループFORを開始し、iがサイズより小さくなります。ループ内で、arr[i]をarr_2[temp]に設定し、温度を1ずつ上げます。

    • iがサイズより小さくなるまでiから0までループFORを開始します。 arr[i]を印刷します。

#include <bits/stdc++.h>

using namespace std;
void array_rearrange(int arr[], int size){
   int even = size / 2;
   int odd = size - even;
   int temp = odd - 1;
   int arr_2[size];
   for(int i = 0; i < size; i++){
      arr_2[i] = arr[i];
   }
   sort(arr_2, arr_2 + size);
   for(int i = 0; i < size; i += 2){
      arr[i] = arr_2[temp];
      temp--;
   }
   temp = odd;
   for(int i = 1; i < size; i += 2){
      arr[i] = arr_2[temp];
      temp++;
   }
   cout<<"Array after rearranging elements are: ";
   for (int i = 0; i < size; i++){
      cout << arr[i] << " ";
   }
}
int main(){
   int arr[] = {5, 9, 10, 12, 32, 35, 67, 89};
   int size = sizeof(arr) / sizeof(arr[0]);
   array_rearrange(arr, size);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます

Array after rearranging elements are: 12 32 10 35 9 67 5 89

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

    配列は、同じデータ型の複数の要素のコンテナです。要素のインデックスは0から始まります。つまり、最初の要素のインデックスは0です。 この問題では、2つの偶数のインデックス付き数値と2つの奇数のインデックス付き数値の絶対差を見つける必要があります。 インデックス付きの数値でも=0,2,4,6,8…。 奇数のインデックス番号=1,3,5,7,9… 絶対差は、2つの要素間の差の係数です。 たとえば、 15と7の絶対差=(| 15-7 |)=8 Input: arr = {1 , 2, 4, 5, 8} Output : Absolute difference of even number

  2. 配列内の偶数と奇数のインデックス付き要素の絶対差(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 :