C ++で2つのトラバーサルと1つのトラバーサルを使用して、配列から要素を削除しますか?
2つのトラバーサル
まず、元の配列と、検索して配列から削除する要素を定義しましょう-
int ele = 5; int arr = [1,2,3,4];
次に、配列をループして、指定された要素を見つけます-
for (i=0; i<length; i++) if (arr[i] == ele) break;
指定された要素の位置が見つかった場合、見つかった要素の右側にある要素を左にシフトします-
if (i < length) { length--; for (int j=i; j<length; j++) arr[j] = arr[j+1]; }
例
次の実装を見て、2つのトラバーサルで配列内の要素が削除されていることを確認しましょう-
#include<iostream> using namespace std; int main() { int arr[] = {11, 15, 6, 8, 9, 10}; int length = sizeof(arr)/sizeof(arr[0]); int ele = 6; int i; for (i=0; i<length; i++) if (arr[i] == ele) break; if (i < length) { length--; for (int j=i; j<length; j++) arr[j] = arr[j+1]; } cout << "The array after deletion is "<<endl; for (int i=0; i<length; i++) cout << arr[i] << " "; return 0; }
出力
上記のコードは次の出力を生成します-
The array after deletion is 11 15 8 9 10
1つのトラバーサル
まず、元の配列と、検索して配列から削除する要素を定義しましょう-
int ele = 15; int arr = [11,15,6,8,9,10];
ここで、2つの変数をブール値 foundで宣言します。 これは、要素が見つかったかどうかを指定し、int pos 見つかった場合は要素の位置を保存します-
bool found=false; int pos=-1;
次に、配列を検索し、要素が見つかった場合は、ループが1回でトラバースしている間に、その位置とシフト要素を保存します。
for (int i=0; i<length; i++){ if(pos!=-1){ arr[pos]=arr[pos+1]; j++; } else if(arr[i]==ele){ pos=i; found=true; } }
例
次の実装を見て、1回のトラバーサルでのみ配列内の要素が削除されることを確認しましょう-
#include<iostream> using namespace std; int main() { int arr[] = {11, 15, 6, 8, 9, 10}; int length = sizeof(arr)/sizeof(arr[0]); int ele = 6 ; bool found=false; int pos=-1; for (int i=0; i<length; i++){ if(pos!=-1){ arr[pos]=arr[pos+1]; pos++; } else if(arr[i]==ele){ pos=i; found=true; } } cout << "The array after deletion is "<<endl; if(found){ length--; } for (int i=0; i<length; i++) cout << arr[i] << " "; return 0; }
出力
上記のコードは次の出力を生成します-
The array after deletion is 11 15 8 9 10
-
C ++で条件演算子を使用せずに、配列から最大の要素を検索します
いくつかの要素を持つ配列Aがあるとします。配列Aで最大の要素を見つける必要がありますが、制約は、条件演算子を使用できないことです。したがって、A =[12、63、32、24、78、56、20]の場合、最大要素は78になります。 この問題を解決するために、ビット単位のAND演算を使用します。最初に、1つの追加要素INT_MAX(すべてのビットが1)を配列に挿入します。次に、配列から任意のペアの最大AND値を見つけようとします。この取得された最大値には、INT_MAXのAND値と元の配列の最大要素が含まれ、これが結果になります。 例 #include <iostream> #in
-
STLを使用したC++の配列製品
これは、配列製品を見つけるためのC++プログラムの例です。 アルゴリズム Begin Initialize the values of array. Call used defined function accumulate to return the product of array. Print the solution. End. サンプルコード #include <iostream> #include <numeric> using namespace std; int ProductOfArray(int p[], int n) { &nbs