/* 10000個の乱数を昇順にソートする。 (入力ファイルを利用、ファイル名 9_7.txt) ここでは「qsort関数を利用」 */ #include#include #include #define Count 10000 int double_cmp(); main(void) { FILE *fp; double x[Count]; int nx = sizeof(x)/sizeof(x[0]); int cnt=0; double val=0.0; if(( fp= fopen("9_7.txt", "r") ) == NULL ) { printf( "ファイルが見つかりません。 --- 9_7.txt\n"); exit( EXIT_FAILURE); } for(cnt = 0; cnt < Count ; cnt++) { fscanf(fp,"%lf",&val); if(val == 0.0) { break; } x[cnt]=val; } qsort(x,nx,sizeof(double),(int(*)(const void *, const void *)) double_cmp); for(cnt = 0 ; cnt < Count ; cnt++) { printf("%d %f\n", cnt, x[cnt]); } fclose(fp); return EXIT_SUCCESS; } /*double型の比較関数(昇順ソート用)*/ int double_cmp(const double *a, const double *b) { if (*a < *b) return (-1); else if( *a > *b) return (1); else return (0); }
[出力結果]
ファイルへ出力: sort.txt
Back to C Language