1~100の整数データをファイルから読み込んで、データの最頻値を出力する。入力データは、カレントディレクトリの「003.txt」に保存されている。また、データは100件以内。
整数データ(100件以内)
整数データの最頻値(複数アル場合は、改行して全て表示)
5
6
5
8
7
5
9
7
3
4
7
5
7
まず、100個の要素が入る配列を用意します。後は、ひたすらインクリメント。そして、一番出てきた数が多いものを探して出力です。
#include <stdio.h> int main(){ int out[101]; int in; int max; int i; FILE *fp; for(i=0;i<101;i++)out[i]=0; fp = fopen("003.txt","r"); while(EOF != fscanf(fp,"%d",&in)){ out[in]++;//入力に応じた要素をインクリメント } //もっとも現れた数の回数を探索 max=0; for(i=0;i<101;i++){ if(max<out[i])max = out[i]; } //もっとも現れた数達を出力 for(i=0;i<101;i++){ if(max == out[i])printf("%d\n",i); } return 0; }
コレを発展させると瓶ソートになるかもしれません。