ラックナンバーリサーチの時間が過去の履歴は正常に表示されますが、
短い順に並べるところの年と月が2017年が3917年、10月が9月と表示され、そのほかの
時間は正常です。コードの下に実行結果をはりつけています。教えてください。
コード /* 構造体の配列を宣言して、ファイルからデータを読み込むサンプルプログラムです。 ラックナンバーリサーチの構造体配列の過去の履歴の表示と scoreの実行時間の短い順にソートします。 */ #include <stdio.h> #include <stdlib.h> #include <time.h> #define MAXCNT 100 char dtfile[] = "LACKNUM.DAT"; typedef struct{ int tm_year; int tm_mon; int tm_mday; int tm_hour; int tm_min; int tm_sec; }local; local data_t[100]; typedef struct { // 構造体の宣言 local data_t[100]; double score; } tim_t; // --------------- 比較用の関数 cmp ------------------- int cmp( const void *p, const void *q ) { double p_score = ((tim_t*)p)->score; double q_score = ((tim_t*)q)->score; if (p_score > q_score) return 1; else if(p_score < q_score) return -1; else return 0; } // ---------------------------------------------------- int main(void) { int i,count=0; FILE *fp; tim_t lst[MAXCNT]; // 構造体の宣言 local data_t[MAXCNT]; if( (fp = fopen(dtfile, "rb" )) == NULL ) { printf( "ファイルがオープンできません\n"); exit( 1 ); } for(i=0; i<MAXCNT; i++){ if(fscanf(fp,"%d %d %d %d %d %d %lf\n" // 構造体配列への読み込み , &lst->data_t[i].tm_year,&lst->data_t[i].tm_mon, &lst->data_t[i].tm_mday, &lst->data_t[i].tm_hour,&lst->data_t[i].tm_min,&lst->data_t[i].tm_sec,&lst[i].score )!= 7) break; (count)++; return count; } int n=sizeof(lst)/sizeof(tim_t); qsort( lst,n, sizeof(tim_t), cmp ); printf("\n------------実行時間の短い順にソ\ートします。--------------\n\n"); for(i=0; i<n; i++ ){ printf("%d年 %d月 %d日 %d時 %d分 %d秒 \n所要時間(score)は%.1f\n\n" // 構造体配列への読み出し , data_t[i].tm_year, data_t[i].tm_mon,data_t[i].tm_mday,data_t[i].tm_hour,data_t[i].tm_min,data_t[i].tm_sec,lst[i].score ); } fflush(stdout); fclose(fp); printf("count1:%d\n\n", count); return 0; } /* 実行結果 C:\MinGW\users\chap09\kadai>gcc -I. -o narabekae1 narabekae1.c -Wall C:\MinGW\users\chap09\kadai> narabekae count1:13 2017年 9月 16日 8時 52分 18秒 所要時間(score)は10.6 2015年 12月 7日 19時 59分 8秒 所要時間(score)は8.0 2016年 1月 4日 1時 9分 11秒 所要時間(score)は7.5 2016年 1月 4日 19時 16分 8秒 所要時間(score)は9.0 2016年 1月 4日 19時 2分 44秒 所要時間(score)は7.5 2016年 1月 4日 22時 31分 52秒 所要時間(score)は9.3 2016年 1月 4日 23時 33分 50秒 所要時間(score)は10.2 2016年 1月 31日 21時 9分 53秒 所要時間(score)は7.0 2016年 2月 2日 8時 49分 9秒 所要時間(score)は9.4 2016年 2月 27日 12時 45分 26秒 所要時間(score)は13.0 2016年 2月 28日 2時 27分 20秒 所要時間(score)は7.4 2016年 5月 2日 16時 43分 32秒 所要時間(score)は6.3 2017年 9月 14日 10時 21分 18秒 所要時間(score)は6.0 実行時間の短い順にソートします。 3917年 10月 14日 10時 21分 18秒 ....年、月の表示がおかしい 所要時間(score):6.0 3916年 6月 2日 16時 43分 32秒 所要時間(score):6.3 3916年 2月 31日 21時 9分 53秒 所要時間(score):7.0 3916年 3月 28日 2時 27分 20秒 所要時間(score):7.4 3916年 2月 4日 1時 9分 11秒 所要時間(score):7.5 3916年 2月 4日 19時 2分 44秒 所要時間(score):7.5 3915年 13月 7日 19時 59分 8秒 所要時間(score):8.0 3916年 2月 4日 19時 16分 8秒 所要時間(score):9.0 3916年 2月 4日 22時 31分 52秒 所要時間(score):9.3 3916年 3月 2日 8時 49分 9秒 所要時間(score):9.4 3916年 2月 4日 23時 33分 50秒 所要時間(score):10.2 3917年 10月 16日 8時 52分 18秒 所要時間(score):10.6 3916年 3月 27日 12時 45分 26秒 所要時間(score):13.0 count2:13 count3は13 C:\MinGW\users\chap09\kadai> */
回答2件
あなたの回答
tips
プレビュー