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

C言語で配列内の重複する数値を削除するプログラムの作成方法

ユーザーが重複した要素を含む数値を配列に入力できるようにします。

ここでは、配列内の重複した数値(要素)を削除し、重複のない一意な要素だけで構成された配列を作成するC言語のコードを紹介します。

以下に具体例を示します。

  • ユーザーの入力:12, 30, 12, 45, 67, 30
  • 出力:12, 30, 45, 67(重複を削除した後)

アルゴリズムの考え方

このプログラムでは、二重ループを使用して配列内のすべての要素同士を比較します。外側のループで基準となる要素を選び、内側のループでそれ以降の要素と照合します。同じ値が見つかった場合、その要素を削除するために後続の要素を1つずつ前に詰め、配列の有効サイズを1つ減らします。

プログラム

以下は、配列内の重複する数値を削除するCプログラムです。

#include <stdio.h>
#define MAX 100 // 配列の最大サイズ

int main(){
    int array[MAX]; // サイズ100の配列を宣言
    int size;
    int i, j, k; // ループ変数

    /* 配列のサイズを入力 */
    printf("enter the size of array : ");
    scanf("%d", &size);

    /* 配列に要素を入力 */
    printf("Enter elements in an array : ");
    for(i=0; i<size; i++){
        scanf("%d", &array[i]);
    }

    /* 配列内の重複要素を検索 */
    for(i=0; i<size; i++){
        for(j=i+1; j<size; j++){
            /* 重複が見つかった場合 */
            if(array[i] == array[j]){
                /* 現在の重複要素を削除 */
                for(k=j; k<size; k++){
                    array[k] = array[k + 1];
                }
                /* 重複要素を削除した後、サイズを1減らす */
                size--;
                /* 要素のシフトが発生した場合はjを増やさない */
                j--;
            }
        }
    }

    /* 重複要素を削除した後の配列を出力 */
    printf("\nArray elements after deleting duplicates : ");
    for(i=0; i<size; i++){
        printf("%d\t", array[i]);
    }

    return 0;
}

実行結果

実行結果は以下の通りです。

enter the size of array : 10
Enter elements in an array : 23 12 34 56 23 12 56 78 45 56
Array elements after deleting duplicates : 23 12 34 56 78 45

処理のポイント

  • 二重ループによる比較: 外側のループ変数 i で各要素を順番に選択し、内側のループ変数 j でその後ろの要素と比較します。
  • 要素のシフト: 重複が見つかった位置 j 以降の要素を1つずつ左に移動させることで、重複要素を上書きして削除します。
  • サイズの調整: 削除後は配列の有効サイズ size を1減らします。
  • インデックスの巻き戻し: 要素をシフトした直後は別の要素が同じ位置に移動してくるため、j-- でインデックスを戻して再度チェックします。
  1. C言語で配列を逆順に反転させるプログラムの書き方

    配列とは、共通の名前のもとで管理される、関連性のあるデータ項目の集まりのことです。同じ型の複数の値を効率的に扱いたい場合に活用されます。配列の宣言構文C言語で配列を宣言する際の基本的な構文は以下のとおりです。データ型 配列名 [サイズ];配列の初期化配列は、宣言と同時に初期化することもできます。int a[5] = { 10,20,30,40,50};この例では、整数型の配列 a の5つの要素に、それぞれ10から50までの値が順番に格納されています。C言語で配列を逆順にする方法配列の要素を逆順に並べ替えるには、要素の入れ替え(スワップ)やコピーのテクニックを利用します。たとえば、4つの要素を持

  2. Pythonでリストの重複要素を出力するプログラムの書き方

    リスト(配列)の中から重複している要素を見つけて出力したい場合、リストの各要素を順番に取り出して比較する、ネストされたループ(二重ループ)を使うのが基本的なアプローチです。以下に具体的な実装例を示します。サンプルコードmy_list = [1, 2, 5, 6, 8, 9, 3, 4, 8, 9, 1, 8] print(リストの内容 :) print(my_list) print(重複している要素は次のとおりです : ) for i in range(0, len(my_list)): for j in range(i+1, len(my_list)): if(my_