ポインタを使用して配列要素を削除するCプログラム
問題
ユーザーが実行時に配列から要素を削除し、削除後に画面に表示される結果を削除するCプログラムを作成します。削除された要素が配列にない場合は、無効な入力を表示する必要があります。
解決策
配列は、共通の要素のグループを1つの名前で保持するために使用されます。
配列の操作は次のとおりです-
- 挿入
- 削除
- 検索
アルゴリズム
ポインタを使用して要素を配列に削除するアルゴリズムを参照してください。
ステップ1-要素の数を宣言して読み取ります。
ステップ2-実行時にアレイサイズを宣言して読み取ります。
ステップ3-配列要素を入力します。
ステップ4-ポインタ変数を宣言します。
ステップ5-実行時にメモリを動的に割り当てます。
ステップ6-削除する要素を入力します。
ステップ7-削除後、要素は1つ左にシフトされます。
例
配列のサイズは次のとおりです:5
配列要素は次のとおりです-
1 2 3 4 5
削除する要素の位置を入力します:4
出力は次のとおりです-
After deletion the array elements are: 1 2 3 5
例
以下は、ポインタを使用して要素を配列に挿入するCプログラムです-
#include<stdio.h>
#include<stdlib.h>
void delete(int n,int *a,int pos);
int main(){
int *a,n,i,pos;
printf("enter the size of array:");
scanf("%d",&n);
a=(int*)malloc(sizeof(int)*n);
printf("enter the elements:\n");
for(i=0;i<n;i++){
scanf("%d",(a+i));
}
printf("enter the position of element to be deleted:");
scanf("%d",&pos);
delete(n,a,pos);
return 0;
}
void delete(int n,int *a,int pos){
int i,j;
if(pos<=n){
for(i=pos-1;i<n;i++){
j=i+1;
*(a+i)=*(a+j);
}
printf("after deletion the array elements is:\n");
for(i=0;i<n-1;i++){
printf("%d\n",(*(a+i)));
}
}
else{
printf("Invalid Input");
}
} 出力
上記のプログラムを実行すると、次の出力が生成されます-
enter the size of array:5 enter the elements: 12 34 56 67 78 enter the position of element to be deleted:4 After deletion the array elements are: 12 34 56 78
-
C言語のポインタを使用して配列要素の合計を計算するにはどうすればよいですか?
ポインタは、他の変数のアドレスを格納する変数です。 次のステートメントを検討してください- int qty = 179; ポインタの宣言 ポインタを宣言するための構文は次のとおりです- int *p; ここで、「p」は他の変数のアドレスを保持するポインタ変数です。 ポインタの初期化 アドレス演算子(&)は、ポインタ変数を初期化するために使用されます。 たとえば、 int qty = 175; int *p; p= &qty; ポインタの配列 これは、アドレスのコレクション(または)ポインターのコレクションです。 宣言 以下は、ポインタの配列の宣言です- dataty
-
C#配列から要素を削除/削除するにはどうすればよいですか?
C#配列から要素を削除するには、ユーザーが要素を削除したい位置から要素をシフトします。 ここでは、最初に5つの要素があります- int[] arr = new int[5] {35, 50, 55, 77, 98}; ここで、2番目の位置にある要素を削除する必要があるとします。つまり、変数「pos =2」が設定されているため、指定された位置の後に要素がシフトされます- // Shifting elements for (i = pos-1; i < 4; i++) { arr[i] = arr[i + 1]; } 次に、以下の完全なコードに示すように結果を