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

C ++で「arr[i]」が「j」の場合、「arr[j]」が「i」になるように配列を再配置します


正の整数型の配列、たとえば、配列内の要素の値が0より大きく、配列のサイズよりも小さい任意のサイズのarr[]が与えられます。タスクは、arr[j]が「j」の場合にarr[j]が「i」になるように配列を再配置し、最終結果を出力することです。

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

入力 − int arr [] ={3、4、1、2、0}

出力 −配置前の配列:3 4 1 2 0 arr [i]がjの場合にarr[j]がiになるような配列の再配置:4 2 3 0 1

説明 −サイズ6の整数配列と、6未満の配列値のすべての要素が与えられます。次に、配列を再配置します。つまり、arr [1]は4、arr [4]=1です。 arr [2]は1、arr [1] =2; arr [3] is2、arr [2] =3; arr [4]は0、arr [0]=4です。したがって、最終的な配列は4 2 301です。

入力 − int arr [] ={2、0、1、3}

出力 −配置前の配列:2 0 1 3 arr [i]がjの場合にarr[j]がiになるような配列の再配置:1 2 0 3

説明 −サイズ6の整数配列と、6未満の配列値のすべての要素が与えられます。次に、配列を再配置します。つまり、arr [0]は2、arr [2]=0です。 arr [1]は0、arr [0] =1; arr [2] is1、arr [1] =2; arr [3]は3、arr [3] =3です。したがって、最終的な配列は1 203です。

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

  • 整数型要素の配列を入力し、配列のサイズを計算します。

  • 配列の前に配列を印刷し、関数Rearrangement(arr、size)を呼び出します

  • 関数Rearrangement(arr、size)の内部

    • 配列arr[]と同じサイズのptr[]として整数型値の配列を作成します。

    • ループFORを開始し、iから0まで、iがサイズより小さくなるまで。ループ内で、ptr[arr[i]]をiに設定します。

    • iがサイズより小さくなるまでiから0までループFORを開始します。ループ内で、arr[i]をptr[i]に設定します。

  • 配列の値を再配置した後、配列を出力します。

#include <bits/stdc++.h>
using namespace std;
void Rearrangement(int arr[], int size){
   int ptr[size];
   for(int i = 0; i < size; i++){
      ptr[arr[i]] = i;
   }
   for(int i = 0; i < size; i++){
      arr[i] = ptr[i];
   }
}
int main(){
   //input an array
   int arr[] = {3, 4, 1, 2, 0};
   int size = sizeof(arr) / sizeof(arr[0]);
   //print the original Array
   cout<<"Array before Arrangement: ";
   for (int i = 0; i < size; i++){
      cout << arr[i] << " ";
   }
   //calling the function to rearrange the array
   Rearrangement(arr, size);
   //print the array after rearranging the values
   cout<<"\nRearrangement of an array such that ‘arr[j]’ becomes ‘i’ if ‘arr[i]’ is ‘j’ is: ";
   for(int i = 0; i < size; i++){
      cout<< arr[i] << " ";
   }
   return 0;
}

出力

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

Array before Arrangement: 3 4 1 2 0
Rearrangement of an array such that ‘arr[j]’ becomes ‘i’ if ‘arr[i]’ is ‘j’ is: 4 2 3 0 1

  1. C ++でa%b =kとなるような配列内のすべてのペア(a、b)を検索します

    配列Aがあるとすると、その配列から、a%b =kとなるようにすべてのペア(a、b)を取得する必要があります。配列がA=[2、3、4、5、7]、k =3であるとすると、ペアは(7、4)、(3、4)、(3、5)、(3、7)になります。 これを解決するために、リストをトラバースして、指定された条件が満たされているかどうかを確認します。 例 #include <iostream> using namespace std; bool displayPairs(int arr[], int n, int k) {    bool pairAvilable = true;

  2. C ++のアレイディケイとは何ですか?

    アレイのタイプと次元の喪失は、アレイの減衰として知られています。これは、ポインタまたは値によって配列を関数に渡すときに発生します。最初のアドレスは、ポインタである配列に送信されます。そのため、配列のサイズは元のサイズではありません。 これは、C++言語での配列減衰の例です 例 #include<iostream> using namespace std; void DisplayValue(int *p) {    cout << "New size of array by passing the value : "; &nbs