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