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