C 言語による配列からの要素削除

CBeginner
オンラインで実践に進む

はじめに

配列とは、連続したメモリ位置に格納された、類似したデータ項目のコレクションであり、要素から構成されます。要素には、対応するメモリ位置のインデックスを指定することでアクセスできます。配列の要素をその位置または値に基づいて削除することが不可欠になる場合があります。この実験(Lab)では、位置と値に基づいて配列から要素を削除する方法を学びます。

C プロジェクトの作成

まず、コードエディタで C プロジェクトを作成する必要があります。 ~/project/ ディレクトリの下に新しいファイル "main.c" を作成し、次のコードを記述します。

#include <stdio.h>

int main()
{
  return 0;
}

位置に基づいて配列から要素を削除する

このステップでは、整数の配列、配列のサイズ、および削除する要素の位置を受け入れる C 言語のプログラムを作成します。次に、要素を削除し、更新された配列を出力します。

#include <stdio.h>

int main()
{
    int arr[100], position, c, n;

    printf("Enter the number of elements in array: ");
    scanf("%d", &n);

    printf("Enter %d elements:\n", n);
    for(c = 0; c < n; c++)
        scanf("%d", &arr[c]);

    printf("Enter the location of the element to delete: ");
    scanf("%d", &position);

    if (position >= n + 1)
        printf("Deletion not possible.\n");
    else
        for (c = position - 1; c < n - 1; c++)
            arr[c] = arr[c+1];

    printf("The updated array is: ");
    for(c = 0; c < n-1; c++)
        printf("%d ", arr[c]);

    return 0;
}

コードの説明:

  • 最大 100 個の要素を格納できる整数配列 arr[100] を作成します。
  • 配列内の要素数を表す整数 n をユーザーから入力します。
  • for ループを使用して、scanf 関数を使用してユーザーからの入力を配列 arr に受け入れます。
  • 削除する要素の位置をユーザーから入力として受け取ります。
  • ユーザーが入力した位置が有効かどうかを確認します。1 から n の間である必要があります。
  • 位置が有効な場合、削除された要素の場所に位置の左側の要素を配置します。これは、要素を左側の場所に移動するためのループを実装することによって実現されます。
  • 最後に、printf 文を使用して更新された配列を出力します。

値に基づいて配列から要素を削除する

このステップでは、ユーザーが入力した値に基づいて配列要素を削除する C 言語のプログラムを作成します。

#include<stdio.h>

int main()
{
    int arr[10], element, c, n, pos, found=0;

    printf("Enter the number of elements in array: ");
    scanf("%d", &n);

    printf("Enter %d elements:\n", n);
    for (c = 0; c < n; c++)
        scanf("%d", &arr[c]);

    printf("Enter the element to delete: ");
    scanf("%d", &element);

    for (c = 0; c < n; c++)
    {
        if (arr[c] == element)
        {
            found = 1;
            pos = c;
            break;
        }
    }

    if (found == 1)
    {
        for (c = pos; c < n - 1; c++)
            arr[c] = arr[c+1];

        printf("The updated array is: ");
        for (c = 0; c < n - 1; c++)
            printf("%d ", arr[c]);
    }

    else
        printf("Element not found in array.");

    return 0;
}

コードの説明:

  • 整数配列 arr[10] を作成します。
  • ユーザー入力変数 n から追加する要素の数を格納します。
  • for ループを使用して、scanf 関数によって n 個の整数を 1 つずつ整数配列 arr に入力します。
  • ユーザーから削除する要素の入力を受け取ります。
  • for ループを使用して、0 から n-1 まで配列を走査し、if 文を使用して、ユーザーが入力した要素が配列のいずれかの要素と等しいかどうかを確認します。
  • 等しい場合、その要素のインデックスを格納する変数 pos を宣言します。
  • 別の for ループを使用して要素を削除し、配列の残りの要素をシフトします。
  • 最後に、printf 文を使用して更新された配列を出力します。

まとめ

この実験(Lab)では、C プログラミングにおいて、配列から要素をその位置または値によって削除する方法を学びました。配列から要素を削除するプログラムは、配列、そのサイズ、および削除する要素の位置/値を入力として受け取ります。for ループを使用して配列を走査し、ターゲット要素の位置または値を見つけ、次にループを使用して要素を削除します。これは、削除する要素の右側にある要素を配列の最後まで左側にコピーすることによって実現されます。削除後、配列サイズは 1 つ減少します。