C 言語における配列への要素挿入

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

はじめに

C 言語において、配列は連続したメモリ領域に格納された同じデータ型のコレクションです。これにより、単一の変数名の下に複数の値を格納することができ、メモリ空間の節約とコード構造の簡略化に役立ちます。この実験では、配列の特定の位置に要素を挿入する方法を学びます。

注:コーディングを練習し、gcc を使ってコンパイルと実行する方法を学ぶには、自分で ~/project/main.c ファイルを作成する必要があります。

cd ~/project
## main.cを作成する
touch main.c
## main.cをコンパイルする
gcc main.c -o main
## mainを実行する
./main

配列の作成

このステップでは、初期要素を持つ配列を作成し、その値を表示します。

#include <stdio.h>

int main() {
    // 変数と配列を定義する
    int array[5] = {10, 20, 30, 40, 50};
    int n = 5, i;

    printf("初期配列:");
    for(i=0; i<n; i++) {
        printf("%d ", array[i]);
    }

    return 0;
}

ユーザー入力の取得

このステップでは、挿入する新しい値とその値を挿入するインデックスについて、ユーザー入力を取得します。

#include <stdio.h>

int main() {
    // 変数と配列を定義する
    int array[5] = {10, 20, 30, 40, 50};
    int n = 5, i, value, position;

    printf("初期配列:");
    for(i=0; i<n; i++) {
        printf("%d ", array[i]);
    }

    // 新しい値と位置の入力を取得する
    printf("\n\n挿入する値を入力してください:");
    scanf("%d", &value);

    printf("挿入する位置を入力してください:");
    scanf("%d", &position);

    return 0;
}

要素の挿入

このステップでは、指定された位置に新しい要素を配列に挿入します。既存の要素をその位置の右にシフトさせ、位置インデックスに新しい要素を追加します。

#include <stdio.h>

int main() {
    // 変数と配列を定義する
    int array[5] = {10, 20, 30, 40, 50};
    int n = 5, i, value, position;

    printf("初期配列:");
    for(i=0; i<n; i++) {
        printf("%d ", array[i]);
    }

    // 新しい値と位置の入力を取得する
    printf("\n\n挿入する値を入力してください:");
    scanf("%d", &value);

    printf("挿入する位置を入力してください:");
    scanf("%d", &position);

    // 既存の要素を位置の右にシフトさせる
    for(i=n-1; i>=position-1; i--) {
        array[i+1] = array[i];
    }

    // 位置インデックスに新しい要素を挿入する
    array[position-1] = value;

    return 0;
}

結果の表示

このステップでは、挿入された要素を持つ新しい配列を表示します。

#include <stdio.h>

int main() {
    // 変数と配列を定義する
    int array[5] = {10, 20, 30, 40, 50};
    int n = 5, i, value, position;

    printf("初期配列:");
    for(i=0; i<n; i++) {
        printf("%d ", array[i]);
    }

    // 新しい値と位置の入力を取得する
    printf("\n\n挿入する値を入力してください:");
    scanf("%d", &value);

    printf("挿入する位置を入力してください:");
    scanf("%d", &position);

    // 既存の要素を位置の右にシフトさせる
    for(i=n-1; i>=position-1; i--) {
        array[i+1] = array[i];
    }

    // 位置インデックスに新しい要素を挿入する
    array[position-1] = value;

    // 新しい配列を表示する
    printf("\n\n挿入された要素を持つ新しい配列:");
    for(i=0; i<n+1; i++) {
        printf("%d ", array[i]);
    }

    return 0;
}

最終コード

以下は、配列に要素を挿入するための最終コードです。

#include <stdio.h>

int main() {
    // 変数と配列を定義する
    int array[5] = {10, 20, 30, 40, 50};
    int n = 5, i, value, position;

    printf("初期配列:");
    for(i=0; i<n; i++) {
        printf("%d ", array[i]);
    }

    // 新しい値と位置の入力を取得する
    printf("\n\n挿入する値を入力してください:");
    scanf("%d", &value);

    printf("挿入する位置を入力してください:");
    scanf("%d", &position);

    // 既存の要素を位置の右にシフトさせる
    for(i=n-1; i>=position-1; i--) {
        array[i+1] = array[i];
    }

    // 位置インデックスに新しい要素を挿入する
    array[position-1] = value;

    // 新しい配列を表示する
    printf("\n\n挿入された要素を持つ新しい配列:");
    for(i=0; i<n+1; i++) {
        printf("%d ", array[i]);
    }

    return 0;
}

まとめ

この実験では、C 言語を使って配列の特定の位置に要素を挿入する方法を学びました。初期配列を作成し、新しい要素と位置に関するユーザー入力を取得し、既存の要素を右にシフトさせることで指定された位置に要素を配列に挿入し、新しい結果となる配列を表示しました。