C++でarr[i]=iとなるように配列を再配置します
正の整数型の配列、たとえば、配列内の要素の値が0より大きく、配列のサイズよりも小さい任意のサイズのarr[]が与えられます。タスクは、arr[i]が'i'の場合、'i'が配列に存在する場合、それ以外の場合はarr [i]要素に値-1を設定し、最終値を出力するように配列を再配置することです。結果。
このためのさまざまな入出力シナリオを見てみましょう-
入力 − int arr [] ={0、8、1、5、4、3、2、9}
出力 − arr [i]=iとなるような配列の再配置は次のとおりです。0123 4 5 -1 -1
説明 −サイズ8の整数配列と、8未満の配列値のすべての要素が与えられます。次に、配列を再配置します。つまり、
arr[0] = 0(present in an array) arr[1] = 1(present in an array) arr[2] = 2(present in an array) arr[3] = 3(present in an array) arr[4] = 4(present in an array) arr[5] = 5(present in an array) arr[6] = -1(NOT present in an array) arr[7] = -1(NOT present in an array)
入力 − int arr [] ={1、2、6、9、10}
出力 − arr [i]=iとなるような配列の再配置は次のとおりです。-112 -1 -1
説明 −サイズ5の整数配列と、5未満の配列値のすべての要素が与えられます。次に、配列を再配置します。つまり、
arr[0] = -1(NOT present in an array) arr[1] = 1(present in an array) arr[2] = 2(present in an array) arr[3] = -1(NOT present in an array) arr[4] = -1(NOT present in an array)
以下のプログラムで使用されているアプローチは次のとおりです
-
整数型要素の配列を入力し、配列のサイズを計算します。
-
配置する前に配列を印刷し、関数Rearranging(arr、size)
を呼び出します。 -
関数Rearing(arr、size)の内部
-
整数型変数を宣言します。たとえば、ptr
-
iがサイズより小さくなるまでiから0までループFORを開始します。ループ内で、jがサイズより小さくなるまでjから0までの別のループFORを開始します。
-
ループ内で、IF arr [j] =iを確認してから、ptr =arr [j]、arr[j]をarr[i]に設定し、arr[i]をptrに設定して中断します。
-
iからiがサイズ未満になるまでループFORを開始します。ループ内で、IF arr [i]!=iを確認してから、arr[i]を-1に設定します。
-
-
配列の値を再配置した後、配列を出力します。
例
#include <iostream> using namespace std; void Rearranging(int arr[], int size){ int ptr; for(int i = 0; i < size; i++){ for(int j = 0; j < size; j++){ if(arr[j] == i){ ptr = arr[j]; arr[j] = arr[i]; arr[i] = ptr; break; } } } for(int i = 0; i < size; i++){ if(arr[i] != i){ arr[i] = -1; } } } int main(){ int arr[] = {0, 8, 1, 5, 4, 3, 2, 9 }; int size = sizeof(arr) / sizeof(arr[0]); //calling the function to rearrange an array such that arr[i] = i Rearranging(arr, size); //Printing the array cout<<"Rearrangement of an array such that arr[i] = i is: "; for(int i = 0; i < size; i++){ cout << arr[i] << " "; } }
出力
上記のコードを実行すると、次の出力が生成されます
Rearrangement of an array such that arr[i] = i is: 0 1 2 3 4 5 -1 -1
-
C ++で(x%k)*(x / k)==nとなるような最小のxを見つけます
2つの正の整数nとkが与えられ、(x%k)*(x / k)がnと同じになるように、正の整数xを見つける必要があります。したがって、nとkがそれぞれ4と6の場合、出力は10になります。したがって、(10%6)*(10/6)=4です。 x%kの値は[1からk – 1]の範囲にあることがわかっているので(0は含まれません)ここで、nを除算する範囲で可能な整数を見つけるため、与えられた方程式は次のようになります。 * k)/(x%k)+(x%k) 例 #include<iostream> using namespace std; int minValue(int x, int y){ &
-
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;