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

C言語でポインタを使用して配列に要素を挿入するプログラムの作成方法


問題

実行時にユーザーが入力した要素を配列に挿入し、挿入後の結果を画面に表示するCプログラムを作成しましょう。ただし、指定された挿入位置が配列のサイズよりも大きい場合は、「Invalid Input(無効な入力)」と表示する必要があります。

解決策

配列とは、同じ種類の複数の要素を一つの名前でまとめて管理するためのデータ構造です。

配列に対して実行できる主な操作は以下の通りです。

  • 挿入(Insert)
  • 削除(Delete)
  • 検索(Search)

アルゴリズム

ポインタを使用して配列に要素を挿入する際のアルゴリズムは、以下の手順に従います。

ステップ1: 要素数を宣言し、読み込みます。

ステップ2: 実行時に配列のサイズを宣言し、読み込みます。

ステップ3: 配列の各要素を入力します。

ステップ4: ポインタ変数を宣言します。

ステップ5: malloc関数などを使って、実行時にメモリを動的に確保します。

ステップ6: 新しい要素を挿入する位置を入力します。

ステップ7: その位置に新しい要素を挿入し、それ以降の右側の要素をすべて1つずつ後ろへシフトします。

実行例

配列のサイズ: 5

配列の要素は以下の通りです。

1 2 3 4 5

挿入する新しい要素: 9

挿入位置: 4

この場合の出力は以下のようになります。

After insertion the array elements are:
1 2 3 9 4 5

Cプログラム

以下は、ポインタを使用して配列に要素を挿入するCプログラムの例です。

#include<stdio.h>
#include<stdlib.h>
void insert(int n1, int *a, int len, int ele){
    int i;
    printf("Array elements after insertion is:\n");
    for(i=0;i<len-1;i++){
        printf("%d\n",*(a+i));
    }
    printf("%d\n",ele);
    for(i=len-1;i<n1;i++){
        printf("%d\n",*(a+i));
    }
}
int main(){
    int *a,n1,i,len,ele;
    printf("enter size of array elements:");
    scanf("%d",&n1);
    a=(int*)malloc(n1*sizeof(int));
    printf("enter the elements:\n");
    for(i=0;i<n1;i++){
        scanf("%d",a+i);
    }
    printf("enter the position where the element need to be insert:\n");
    scanf("%d",&len);
    if(len<=n1){
        printf("enter the new element that to be inserted:");
        scanf("%d",&ele);
        insert(n1,a,len,ele);
    } else {
        printf("Invalid Input");
    }
    return 0;
}

出力結果

上記のプログラムを実行すると、以下のような出力が得られます。

enter size of array elements:5
enter the elements:
1
3
5
7
2
enter the position where the element need to be insert:
5
enter the new element that to be inserted:9
Array elements after insertion are:
1
3
5
7
9
2

  1. 【初心者向け】C言語のポインタを使って配列要素の合計を計算する方法

    ポインタとは?ポインタ(Pointer)とは、他の変数のアドレス(メモリ上の場所)を格納するための変数のことです。例えば、次のような変数宣言を見てみましょう。int qty = 179;この場合、変数 qty には値 179 が格納されています。ポインタは、この qty が配置されているメモリ上のアドレスを保持することができます。ポインタの宣言ポインタを宣言する構文は以下の通りです。int *p;ここで p はポインタ変数であり、他の int 型変数のアドレスを保持します。宣言時には、変数名の前に間接演算子 *(アスタリスク)を付けます。ポインタの初期化ポインタ変数を初期化するには、アドレス演

  2. C#プログラムで配列内のK番目に小さい要素を見つける方法

    はじめにC#では、配列を昇順に並べ替えてからインデックスを指定するだけで、K番目に小さい要素を簡単に求められます。本記事では、Array.Sort()メソッドを使った基本的な実装方法を、サンプルコード付きでわかりやすく解説します。ステップ1:配列を宣言するまず、対象となる整数型の配列を宣言します。int[] a = new int[] { 65, 45, 32, 97, 23, 75, 59 };ステップ2:配列をソートするここでは5番目に小さい整数を求めるものとします。まずArray.Sort()メソッドを使って配列を昇順に並べ替えます