質問編集履歴
3
コード修正と実行結果
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -1,105 +1,96 @@
|
|
|
1
1
|
実行日時、実行時間を、実行時間の短い順に表示したいのですが、
|
|
2
2
|
コンパイルはできる状態です。コードの下に実行結果を張り付けています。
|
|
3
|
-
|
|
3
|
+
実行時間時間の短い順に表示されない。
|
|
4
4
|
```
|
|
5
5
|
コード
|
|
6
|
-
/* qsort を使って構造体の配列をソートするプログラム例です。
|
|
7
|
-
構造体配列time_t を実行時間の短い順にソートします。
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
6
|
#include <stdio.h>
|
|
11
7
|
#include <stdlib.h>
|
|
12
|
-
#define MAXCNT 100
|
|
13
8
|
|
|
14
|
-
|
|
9
|
+
#define NDATA ((sizeof lst)/(sizeof(DATA_TIME)))
|
|
15
|
-
int tm_year;
|
|
16
|
-
int tm_mon;
|
|
17
|
-
int tm_mday;
|
|
18
|
-
int tm_hour;
|
|
19
|
-
int tm_min;
|
|
20
|
-
int tm_sec;
|
|
21
|
-
double score;
|
|
22
|
-
}tim_t;
|
|
23
10
|
|
|
11
|
+
typedef struct //
|
|
12
|
+
{
|
|
13
|
+
int year; //
|
|
14
|
+
int mon; //
|
|
15
|
+
int mday; //
|
|
16
|
+
int hour; //
|
|
17
|
+
int min; //
|
|
18
|
+
int sec;
|
|
19
|
+
double score;
|
|
20
|
+
}DATA_TIME;
|
|
21
|
+
|
|
24
|
-
|
|
22
|
+
// --------------- 比較用の関数 cmp cmp -------------------
|
|
25
|
-
int
|
|
23
|
+
int cmpptr( const void *p, const void *q ) {
|
|
26
|
-
return ((
|
|
24
|
+
return (*(DATA_TIME**)p)->score - (*(DATA_TIME**)q)->score;
|
|
27
25
|
}
|
|
26
|
+
// ----------------------------------------------------
|
|
28
27
|
|
|
29
|
-
int main(
|
|
28
|
+
int main()
|
|
30
29
|
{
|
|
31
|
-
|
|
30
|
+
DATA_TIME lst[]={{2017, 9,16, 8,18,10,10.6},
|
|
32
|
-
|
|
31
|
+
{2015,12, 7,19,59, 8, 8.0},
|
|
33
|
-
|
|
32
|
+
{2016, 1, 3, 1, 9,11, 7.5},
|
|
34
|
-
|
|
33
|
+
{2016, 4, 5,19,16, 8, 9.0},
|
|
35
|
-
|
|
34
|
+
{2015, 6, 4,19, 2,44, 7.5},
|
|
36
|
-
|
|
35
|
+
{2016, 8, 7,22,31,52, 9.3},
|
|
37
|
-
|
|
36
|
+
{2014, 1, 4,23,43,50,10.2},
|
|
38
|
-
|
|
37
|
+
{2016, 5,31,21, 9,53, 7.0},
|
|
39
|
-
|
|
38
|
+
{2014, 2,12,28,31,49,13.0},
|
|
40
|
-
|
|
39
|
+
{2016, 2,28, 2,27,20, 7.8},
|
|
41
|
-
|
|
40
|
+
{2015, 5, 2,16,43,32, 6.3},
|
|
42
|
-
|
|
41
|
+
{2017, 9,14,10,21,18, 6.0},
|
|
43
|
-
|
|
42
|
+
{2017, 9,16, 8,18,10, 8.6}};
|
|
43
|
+
|
|
44
|
-
|
|
44
|
+
int i;
|
|
45
|
+
|
|
46
|
+
DATA_TIME *plst[NDATA];
|
|
45
47
|
|
|
48
|
+
// ポインタの配列 plst に構造体配列のアドレスを代入
|
|
46
|
-
|
|
49
|
+
for(i=0; i<NDATA; i++) plst[i]=&lst[i];
|
|
47
50
|
|
|
51
|
+
// 実行時間の短い順にソート
|
|
48
|
-
qsort(
|
|
52
|
+
qsort(plst, NDATA, sizeof(DATA_TIME*), cmpptr );
|
|
49
53
|
|
|
50
|
-
|
|
54
|
+
//並べ替え後の内容を表示
|
|
51
|
-
for(i=0; i<
|
|
55
|
+
for( i=0; i<NDATA; i++ )
|
|
52
|
-
printf("%
|
|
56
|
+
printf(" %d年 %d月 %d日 %d時 %d分 %d秒 実行時間:%.1f秒\n\n"
|
|
57
|
+
,plst[i]->year, plst[i]->mon, plst[i]->mday,
|
|
53
|
-
|
|
58
|
+
plst[i]->hour, plst[i]->min, plst[i]->sec, plst[i]->score);
|
|
54
|
-
}
|
|
55
59
|
}
|
|
56
|
-
/* 実行結果
|
|
57
60
|
|
|
61
|
+
/*実行結果
|
|
58
|
-
C:\MinGW\users\chap09\kadai>gcc -I. -o
|
|
62
|
+
C:\MinGW\users\chap09\kadai>gcc -I. -o narabekae2 narabekae2.c -Wall
|
|
59
63
|
|
|
60
|
-
C:\MinGW\users\chap09\kadai>
|
|
64
|
+
C:\MinGW\users\chap09\kadai> narabekae2
|
|
61
|
-
実行時間の短い順にソートします。
|
|
62
|
-
2017年
|
|
65
|
+
2017年 9月 14日 10時 21分 18秒 実行時間:6.0秒
|
|
63
|
-
6.0秒
|
|
64
66
|
|
|
65
|
-
2015年
|
|
67
|
+
2015年 5月 2日 16時 43分 32秒 実行時間:6.3秒
|
|
66
|
-
6.3秒
|
|
67
68
|
|
|
68
|
-
2016年
|
|
69
|
+
2016年 1月 3日 1時 9分 11秒 実行時間:7.5秒
|
|
69
|
-
7.5秒
|
|
70
70
|
|
|
71
|
-
2015年 12月
|
|
71
|
+
2015年 12月 7日 19時 59分 8秒 実行時間:8.0秒
|
|
72
|
-
8.0秒
|
|
73
72
|
|
|
74
|
-
2015年
|
|
73
|
+
2015年 6月 4日 19時 2分 44秒 実行時間:7.5秒 ・・・おかしい
|
|
75
|
-
7.5秒
|
|
76
74
|
|
|
77
|
-
2016年
|
|
75
|
+
2016年 2月 28日 2時 27分 20秒 実行時間:7.8秒 ・・・おかしい
|
|
78
|
-
7.8秒
|
|
79
76
|
|
|
80
|
-
2016年
|
|
77
|
+
2016年 5月 31日 21時 9分 53秒 実行時間:7.0秒 ・・・おかしい
|
|
81
|
-
7.0秒
|
|
82
78
|
|
|
83
|
-
2016年
|
|
79
|
+
2016年 4月 5日 19時 16分 8秒 実行時間:9.0秒
|
|
84
|
-
9.0秒
|
|
85
80
|
|
|
86
|
-
2016年
|
|
81
|
+
2016年 8月 7日 22時 31分 52秒 実行時間:9.3秒
|
|
87
|
-
9.3秒
|
|
88
82
|
|
|
89
|
-
2014年
|
|
83
|
+
2014年 1月 4日 23時 43分 50秒 実行時間:10.2秒
|
|
90
|
-
10.2秒
|
|
91
84
|
|
|
92
|
-
2017年
|
|
85
|
+
2017年 9月 16日 8時 18分 10秒 実行時間:8.6秒 ・・・おかしい
|
|
93
|
-
8.6秒
|
|
94
86
|
|
|
95
|
-
2017年
|
|
87
|
+
2017年 9月 16日 8時 18分 10秒 実行時間:10.6秒
|
|
96
|
-
10.6秒
|
|
97
88
|
|
|
98
|
-
2014年
|
|
89
|
+
2014年 2月 12日 28時 31分 49秒 実行時間:13.0秒
|
|
99
|
-
13.0秒
|
|
100
90
|
|
|
101
91
|
|
|
102
92
|
C:\MinGW\users\chap09\kadai>
|
|
93
|
+
|
|
103
94
|
*/
|
|
104
95
|
|
|
105
96
|
|
2
コードの変更、結果の変更
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -1,207 +1,107 @@
|
|
|
1
|
-
実行日時、実行時間を
|
|
1
|
+
実行日時、実行時間を、実行時間の短い順に表示したいのですが、
|
|
2
2
|
コンパイルはできる状態です。コードの下に実行結果を張り付けています。
|
|
3
|
-
よろしくおねがいいたします。実行時間時間の短い順
|
|
3
|
+
よろしくおねがいいたします。実行時間時間の短い順に表示されない。
|
|
4
4
|
```
|
|
5
5
|
コード
|
|
6
|
-
/*
|
|
6
|
+
/* qsort を使って構造体の配列をソートするプログラム例です。
|
|
7
|
-
|
|
7
|
+
構造体配列time_t を実行時間の短い順にソートします。
|
|
8
|
+
*/
|
|
9
|
+
|
|
8
10
|
#include <stdio.h>
|
|
9
11
|
#include <stdlib.h>
|
|
10
|
-
#include <time.h>
|
|
11
|
-
|
|
12
12
|
#define MAXCNT 100
|
|
13
|
-
char dtfile[] = "LACKNUM.DAT";
|
|
14
|
-
char dtfile2[] = "LACKNUM2.DAT"; // 最高記録用のファイル
|
|
15
13
|
|
|
16
|
-
typedef struct{
|
|
14
|
+
typedef struct{
|
|
17
|
-
|
|
15
|
+
int tm_year;
|
|
18
|
-
|
|
16
|
+
int tm_mon;
|
|
19
|
-
|
|
17
|
+
int tm_mday;
|
|
20
|
-
|
|
18
|
+
int tm_hour;
|
|
21
|
-
|
|
19
|
+
int tm_min;
|
|
22
|
-
|
|
20
|
+
int tm_sec;
|
|
23
|
-
|
|
21
|
+
double score;
|
|
24
|
-
}
|
|
22
|
+
}tim_t;
|
|
25
23
|
|
|
26
|
-
// 比較関数
|
|
24
|
+
// --------------- 比較用の関数 cmp -------------------
|
|
27
|
-
int
|
|
25
|
+
int cmp( const void *p, const void *q ) {
|
|
28
|
-
return (
|
|
26
|
+
return ((tim_t*)p)->score - ((tim_t*)q)->score;
|
|
29
27
|
}
|
|
30
28
|
|
|
31
|
-
|
|
29
|
+
int main(void)
|
|
32
30
|
{
|
|
31
|
+
tim_t data_t[]={{2017,9,16,8,18,10,10.6},
|
|
32
|
+
{2015,12,7,19,59,8,8.0},
|
|
33
|
+
{2016,1,3,1,9,11,7.5},
|
|
34
|
+
{2016,4,5,19,16,8,9.0},
|
|
35
|
+
{2015,6,4,19,2,44,7.5},
|
|
36
|
+
{2016,8,7,22,31,52,9.3},
|
|
37
|
+
{2014,1,4,23,43,50,10.2},
|
|
38
|
+
{2016,5,31,21,9,53,7.0},
|
|
39
|
+
{2014,2,12,28,31,49,13.0},
|
|
40
|
+
{2016,2,28,2,27,20,7.8},
|
|
41
|
+
{2015,5,2,16,43,32,6.3},
|
|
42
|
+
{2017,9,14,10,21,18,6.0},
|
|
33
|
-
|
|
43
|
+
{2017,9,16,8,18,10,8.6}};
|
|
34
|
-
|
|
44
|
+
int i;
|
|
35
|
-
|
|
36
|
-
|
|
45
|
+
|
|
37
|
-
|
|
38
|
-
SCORE_DATA local[MAXCNT]; // 構造体の宣言
|
|
39
|
-
|
|
40
|
-
if((fp=fopen(dtfile, "rb"))==NULL ){
|
|
41
|
-
printf( "ファイルがオープンできません\n" );
|
|
42
|
-
exit( 1 );
|
|
43
|
-
}
|
|
44
|
-
for(i = 0; i<MAXCNT; i++) {
|
|
45
|
-
if(fscanf(fp,"%d %d %d %d %d %d %lf\n" // 構造体配列への読み込み
|
|
46
|
-
, &local[i].tm_year,&local[i].tm_mon, &local[i].tm_mday,
|
|
47
|
-
&local[i].tm_hour, &local[i].tm_min,&local[i].tm_sec,&local[i].score )!= 7) break;
|
|
48
|
-
(*count)++;
|
|
49
|
-
}
|
|
50
|
-
|
|
46
|
+
int n=sizeof(data_t)/sizeof(tim_t);
|
|
51
47
|
|
|
52
|
-
|
|
48
|
+
qsort( data_t, n, sizeof(tim_t), cmp );
|
|
53
49
|
|
|
54
|
-
|
|
50
|
+
printf( "実行時間の短い順にソ\ートします。\n");
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
for(i=0; i<n; i++){
|
|
57
|
-
|
|
52
|
+
printf("%4d年 %2d月 %2d日 %2d時 %2d分 %2d秒\n %2.1f秒\n\n"
|
|
58
|
-
,local[i].tm_year, local[i].tm_mon, local[i].tm_mday,
|
|
59
|
-
|
|
53
|
+
, 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,data_t[i].score );
|
|
60
|
-
}
|
|
61
|
-
fflush(stdout);
|
|
62
|
-
fclose(fp);
|
|
63
|
-
printf("count1は%d\n\n", *count);
|
|
64
|
-
return *count;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
int main(void)
|
|
68
|
-
{
|
|
69
|
-
FILE *fp;
|
|
70
|
-
int i;
|
|
71
|
-
int count=0;
|
|
72
|
-
double p,q;
|
|
73
|
-
// double bestscore;
|
|
74
|
-
|
|
75
|
-
data_narabekae(&count,&p,&q);
|
|
76
|
-
|
|
77
|
-
/* if((fp=fopen( dtfile2, "wb" ))==NULL ){
|
|
78
|
-
printf( "ファイルがオープンできません\n" );
|
|
79
|
-
exit( 1 );
|
|
80
54
|
}
|
|
81
|
-
|
|
82
|
-
for(i=0;i<10;i++){
|
|
83
|
-
if(fscanf( fp, "%d %d %d %d %d %d %lf\n"
|
|
84
|
-
,&local[i].tm_year+1900, &local[i].tm_mon+1, &local[i].tm_mday,
|
|
85
|
-
&local[i].tm_hour,&local[i].tm_min,&local[i].tm_sec ,&local[i].score)!=7)break;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if((fp=fopen( dtfile2, "rb" ))==NULL ){
|
|
89
|
-
printf( "ファイルがオープンできません\n" );
|
|
90
|
-
exit( 1 );
|
|
91
|
-
}
|
|
92
|
-
for(i=0;i<10;i++){
|
|
93
|
-
printf("%d年 %d月 %d日 %d時 %d分 %d秒 \n所要時間(score)は%.1f\n\n"
|
|
94
|
-
,local[i].tm_year+1900, local[i].tm_mon+1, local[i].tm_mday,
|
|
95
|
-
local[i].tm_hour,local[i].tm_min,local[i].tm_sec );
|
|
96
|
-
|
|
97
|
-
printf("最短所要時間(score)は%.1f", local[0].score);
|
|
98
|
-
|
|
99
|
-
} */
|
|
100
|
-
fclose(fp);
|
|
101
|
-
return 0;
|
|
102
55
|
}
|
|
56
|
+
/* 実行結果
|
|
103
57
|
|
|
104
|
-
|
|
58
|
+
C:\MinGW\users\chap09\kadai>gcc -I. -o narabekae3 narabekae3.c -Wall
|
|
105
59
|
|
|
106
|
-
C:\MinGW\users\chap09\kadai>
|
|
60
|
+
C:\MinGW\users\chap09\kadai>narabekae3
|
|
61
|
+
実行時間の短い順にソートします。
|
|
62
|
+
2017年 9月 14日 10時 21分 18秒
|
|
63
|
+
6.0秒
|
|
107
64
|
|
|
108
|
-
|
|
65
|
+
2015年 5月 2日 16時 43分 32秒
|
|
66
|
+
6.3秒
|
|
109
67
|
|
|
110
|
-
過去の履歴データ
|
|
111
|
-
--------------------------
|
|
112
|
-
|
|
68
|
+
2016年 1月 3日 1時 9分 11秒
|
|
113
|
-
|
|
69
|
+
7.5秒
|
|
114
70
|
|
|
115
|
-
2015年 12月
|
|
71
|
+
2015年 12月 7日 19時 59分 8秒
|
|
116
|
-
|
|
72
|
+
8.0秒
|
|
117
73
|
|
|
118
|
-
|
|
74
|
+
2015年 6月 4日 19時 2分 44秒
|
|
119
|
-
|
|
75
|
+
7.5秒
|
|
120
76
|
|
|
121
|
-
2016年
|
|
77
|
+
2016年 2月 28日 2時 27分 20秒
|
|
122
|
-
|
|
78
|
+
7.8秒
|
|
123
79
|
|
|
124
|
-
2016年
|
|
80
|
+
2016年 5月 31日 21時 9分 53秒
|
|
125
|
-
|
|
81
|
+
7.0秒
|
|
126
82
|
|
|
127
|
-
2016年
|
|
83
|
+
2016年 4月 5日 19時 16分 8秒
|
|
128
|
-
|
|
84
|
+
9.0秒
|
|
129
85
|
|
|
130
|
-
2016年
|
|
86
|
+
2016年 8月 7日 22時 31分 52秒
|
|
131
|
-
|
|
87
|
+
9.3秒
|
|
132
88
|
|
|
133
|
-
|
|
89
|
+
2014年 1月 4日 23時 43分 50秒
|
|
134
|
-
|
|
90
|
+
10.2秒
|
|
135
91
|
|
|
136
|
-
|
|
92
|
+
2017年 9月 16日 8時 18分 10秒
|
|
137
|
-
|
|
93
|
+
8.6秒
|
|
138
94
|
|
|
139
|
-
|
|
95
|
+
2017年 9月 16日 8時 18分 10秒
|
|
140
|
-
|
|
96
|
+
10.6秒
|
|
141
97
|
|
|
142
|
-
|
|
98
|
+
2014年 2月 12日 28時 31分 49秒
|
|
143
|
-
|
|
99
|
+
13.0秒
|
|
144
100
|
|
|
145
|
-
2016年 5月 2日 16時 43分 32秒
|
|
146
|
-
所要時間(score)は6.3
|
|
147
101
|
|
|
148
|
-
2017年 9月 14日 10時 21分 18秒
|
|
149
|
-
所要時間(score)は6.0
|
|
150
|
-
|
|
151
|
-
count1は13
|
|
152
|
-
|
|
153
|
-
|
|
154
102
|
C:\MinGW\users\chap09\kadai>
|
|
103
|
+
*/
|
|
155
104
|
|
|
156
|
-
実行結果(望む結果)
|
|
157
105
|
|
|
158
|
-
C:\MinGW\users\chap09\kadai>gcc -I. -o test6 test6.c -Wall
|
|
159
106
|
|
|
160
|
-
C:\MinGW\users\chap09\kadai>test6
|
|
161
|
-
count0:13
|
|
162
|
-
|
|
163
|
-
2017年 9月 16日 8時 52分 18秒
|
|
164
|
-
所要時間(score)は10.6
|
|
165
|
-
|
|
166
|
-
2015年 12月 7日 19時 59分 8秒
|
|
167
|
-
所要時間(score)は8.0
|
|
168
|
-
|
|
169
|
-
2016年 1月 4日 1時 9分 11秒
|
|
170
|
-
所要時間(score)は7.5
|
|
171
|
-
|
|
172
|
-
2016年 1月 4日 19時 16分 8秒
|
|
173
|
-
所要時間(score)は9.0
|
|
174
|
-
|
|
175
|
-
2016年 1月 4日 19時 2分 44秒
|
|
176
|
-
所要時間(score)は7.5
|
|
177
|
-
|
|
178
|
-
2016年 1月 4日 22時 31分 52秒
|
|
179
|
-
所要時間(score)は9.3
|
|
180
|
-
|
|
181
|
-
2016年 1月 4日 23時 33分 50秒
|
|
182
|
-
所要時間(score)は10.2
|
|
183
|
-
|
|
184
|
-
2016年 1月 31日 21時 9分 53秒
|
|
185
|
-
所要時間(score)は7.0
|
|
186
|
-
|
|
187
|
-
2016年 2月 2日 8時 49分 9秒
|
|
188
|
-
所要時間(score)は9.4
|
|
189
|
-
|
|
190
|
-
2016年 2月 27日 12時 45分 26秒
|
|
191
|
-
所要時間(score)は13.0
|
|
192
|
-
|
|
193
|
-
2016年 2月 28日 2時 27分 20秒
|
|
194
|
-
所要時間(score)は7.4
|
|
195
|
-
|
|
196
|
-
2016年 5月 2日 16時 43分 32秒
|
|
197
|
-
所要時間(score)は6.3
|
|
198
|
-
|
|
199
|
-
2017年 9月 14日 10時 21分 18秒
|
|
200
|
-
所要時間(score)は6.0
|
|
201
|
-
|
|
202
|
-
count3:13
|
|
203
|
-
|
|
204
|
-
後短い時間順省略
|
|
205
|
-
C:\MinGW\users\chap09\kadai>
|
|
206
|
-
|
|
207
107
|
```
|
1
コードの修正と実行結果の変更
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -1,137 +1,158 @@
|
|
|
1
1
|
実行日時、実行時間を表示して、実行時間の短い順に表示したいのですが、
|
|
2
2
|
コンパイルはできる状態です。コードの下に実行結果を張り付けています。
|
|
3
|
-
よろしくおねがいいたします。
|
|
3
|
+
よろしくおねがいいたします。実行時間時間の短い順が表示されない。
|
|
4
4
|
```
|
|
5
5
|
コード
|
|
6
|
-
/* 構造体の配列を宣言して、ファイルからデータを読み込むサンプルプログラムです。
|
|
7
|
-
|
|
6
|
+
/* "LACKNUM.DAT"から実行日時とその時の実行時間を読み込んで表示する。
|
|
8
|
-
そのあと実行時間時間の短い順に並べ替えて表示する。
|
|
7
|
+
そのあと実行時間時間の短い順に並べ替えて表示する。 */
|
|
9
|
-
*/
|
|
10
8
|
#include <stdio.h>
|
|
11
9
|
#include <stdlib.h>
|
|
12
10
|
#include <time.h>
|
|
13
11
|
|
|
14
12
|
#define MAXCNT 100
|
|
15
13
|
char dtfile[] = "LACKNUM.DAT";
|
|
16
|
-
char dtfile2[] = "LACKNUM2.DAT";// 最高記録用のファイル
|
|
14
|
+
char dtfile2[] = "LACKNUM2.DAT"; // 最高記録用のファイル
|
|
17
15
|
|
|
18
|
-
typedef struct{
|
|
16
|
+
typedef struct{ // 構造体の宣言
|
|
19
17
|
int tm_year;
|
|
20
18
|
int tm_mon;
|
|
21
19
|
int tm_mday;
|
|
22
20
|
int tm_hour;
|
|
23
21
|
int tm_min;
|
|
24
|
-
int tm_sec;
|
|
22
|
+
int tm_sec;
|
|
23
|
+
double score;
|
|
25
|
-
}
|
|
24
|
+
}SCORE_DATA;
|
|
26
25
|
|
|
27
|
-
TIME_DATA local[MAXCNT];
|
|
28
|
-
|
|
29
|
-
typedef struct { // 構造体の宣言
|
|
30
|
-
TIME_DATA local;
|
|
31
|
-
double score;
|
|
32
|
-
} SCORE_DATA;
|
|
33
|
-
|
|
34
|
-
// 比較
|
|
26
|
+
// 比較関数
|
|
35
27
|
int cmpptr( const void *p, const void *q ) {
|
|
36
28
|
return (*(SCORE_DATA**)p)->score - (*(SCORE_DATA**)q)->score;
|
|
37
29
|
}
|
|
38
30
|
|
|
39
|
-
double data_narabekae(double* p,double* q)
|
|
31
|
+
double data_narabekae(int* count,double* p,double* q)
|
|
40
32
|
{
|
|
33
|
+
FILE *fp;
|
|
34
|
+
int i;
|
|
35
|
+
|
|
36
|
+
// double bestscore;
|
|
37
|
+
|
|
38
|
+
SCORE_DATA local[MAXCNT]; // 構造体の宣言
|
|
39
|
+
|
|
40
|
+
if((fp=fopen(dtfile, "rb"))==NULL ){
|
|
41
|
+
printf( "ファイルがオープンできません\n" );
|
|
42
|
+
exit( 1 );
|
|
43
|
+
}
|
|
44
|
+
for(i = 0; i<MAXCNT; i++) {
|
|
45
|
+
if(fscanf(fp,"%d %d %d %d %d %d %lf\n" // 構造体配列への読み込み
|
|
46
|
+
, &local[i].tm_year,&local[i].tm_mon, &local[i].tm_mday,
|
|
47
|
+
&local[i].tm_hour, &local[i].tm_min,&local[i].tm_sec,&local[i].score )!= 7) break;
|
|
48
|
+
(*count)++;
|
|
49
|
+
}
|
|
50
|
+
printf("\ncount0:\n\n",*count);
|
|
51
|
+
|
|
52
|
+
// qsort( local, *count, sizeof(SCORE_DATA*), cmpptr );
|
|
53
|
+
|
|
54
|
+
printf("\n過去の履歴データ\n-------------------------- \n");
|
|
55
|
+
|
|
56
|
+
for(i=0;i<*count;i++){
|
|
57
|
+
printf( "%d年 %d月 %d日 %d時 %d分 %d秒 \n所要時間(score)は%.1f\n\n"
|
|
58
|
+
,local[i].tm_year, local[i].tm_mon, local[i].tm_mday,
|
|
59
|
+
local[i].tm_hour,local[i].tm_min,local[i].tm_sec ,local[i].score);
|
|
60
|
+
}
|
|
61
|
+
fflush(stdout);
|
|
62
|
+
fclose(fp);
|
|
63
|
+
printf("count1は%d\n\n", *count);
|
|
64
|
+
return *count;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
int main(void)
|
|
68
|
+
{
|
|
41
69
|
FILE *fp;
|
|
42
70
|
int i;
|
|
43
|
-
int j=0;
|
|
44
71
|
int count=0;
|
|
72
|
+
double p,q;
|
|
45
|
-
double
|
|
73
|
+
// double bestscore;
|
|
46
|
-
double bestscore; //これまでの最短所要時間
|
|
47
74
|
|
|
75
|
+
data_narabekae(&count,&p,&q);
|
|
48
76
|
|
|
49
|
-
SCORE_DATA stars[MAXCNT]; // 構造体配列の宣言
|
|
50
|
-
|
|
51
|
-
|
|
77
|
+
/* if((fp=fopen( dtfile2, "wb" ))==NULL ){
|
|
52
|
-
|
|
78
|
+
printf( "ファイルがオープンできません\n" );
|
|
53
|
-
|
|
79
|
+
exit( 1 );
|
|
54
80
|
}
|
|
81
|
+
|
|
55
|
-
|
|
82
|
+
for(i=0;i<10;i++){
|
|
56
|
-
|
|
57
|
-
while((i = fread(&stars, sizeof(struct tm), 1, fp)) > 0 ){
|
|
58
|
-
|
|
83
|
+
if(fscanf( fp, "%d %d %d %d %d %d %lf\n"
|
|
59
|
-
local->tm_year + 1900, local->tm_mon + 1,
|
|
60
|
-
|
|
84
|
+
,&local[i].tm_year+1900, &local[i].tm_mon+1, &local[i].tm_mday,
|
|
61
|
-
fread(&score, sizeof(double), 1, fp);
|
|
62
|
-
|
|
85
|
+
&local[i].tm_hour,&local[i].tm_min,&local[i].tm_sec ,&local[i].score)!=7)break;
|
|
63
|
-
|
|
64
|
-
// SCORE_DATA *stars[MAXCNT]={0}; // 構造体配列の宣言
|
|
65
|
-
|
|
66
|
-
local[j].tm_year=local->tm_year;
|
|
67
|
-
local[j].tm_mon=local->tm_mon;
|
|
68
|
-
local[j].tm_mday=local->tm_mday;
|
|
69
|
-
local[j].tm_hour=local->tm_hour;
|
|
70
|
-
local[j].tm_min=local->tm_min;
|
|
71
|
-
local[j].tm_sec=local->tm_sec;
|
|
72
|
-
stars[j].score=stars-> score;
|
|
73
|
-
|
|
86
|
+
}
|
|
74
|
-
count++;
|
|
75
87
|
|
|
88
|
+
if((fp=fopen( dtfile2, "rb" ))==NULL ){
|
|
76
|
-
|
|
89
|
+
printf( "ファイルがオープンできません\n" );
|
|
77
|
-
|
|
78
|
-
|
|
90
|
+
exit( 1 );
|
|
79
|
-
|
|
80
|
-
for(i=0; i<count; i++) plst[i] = stars[j];
|
|
81
|
-
|
|
82
|
-
qsort( stars, count, sizeof(SCORE_DATA*), cmpptr );
|
|
83
|
-
|
|
84
|
-
printf("\n過去のbestten\n-------------------------- \n");
|
|
85
|
-
|
|
91
|
+
}
|
|
86
|
-
|
|
92
|
+
for(i=0;i<10;i++){
|
|
87
|
-
printf(
|
|
93
|
+
printf("%d年 %d月 %d日 %d時 %d分 %d秒 \n所要時間(score)は%.1f\n\n"
|
|
88
|
-
,
|
|
94
|
+
,local[i].tm_year+1900, local[i].tm_mon+1, local[i].tm_mday,
|
|
89
|
-
|
|
95
|
+
local[i].tm_hour,local[i].tm_min,local[i].tm_sec );
|
|
90
96
|
|
|
91
|
-
printf("
|
|
97
|
+
printf("最短所要時間(score)は%.1f", local[0].score);
|
|
92
|
-
|
|
98
|
+
|
|
93
|
-
return bestscore;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
99
|
+
} */
|
|
97
100
|
fclose(fp);
|
|
98
|
-
printf("count2は%d\n\n", count);
|
|
99
|
-
return count;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
int main(void)
|
|
103
|
-
{
|
|
104
|
-
int count=0;
|
|
105
|
-
double p,q;
|
|
106
|
-
|
|
107
|
-
data_narabekae(&p,&q);
|
|
108
|
-
|
|
109
|
-
printf("count3:%d\n\n", count);
|
|
110
|
-
|
|
111
101
|
return 0;
|
|
112
102
|
}
|
|
113
103
|
|
|
114
104
|
/*実際の結果
|
|
115
|
-
C:\MinGW\users\chap09\kadai>gcc -I. -o test6 test6.c -Wall
|
|
116
105
|
|
|
117
|
-
C:\MinGW\users\chap09\kadai>
|
|
106
|
+
C:\MinGW\users\chap09\kadai>gcc -I. -o narabekae narabekae.c pdcurses.a
|
|
118
|
-
count0:0
|
|
119
107
|
|
|
120
|
-
|
|
108
|
+
C:\MinGW\users\chap09\kadai>narabekae
|
|
121
|
-
得点(所要時間)は0.0秒
|
|
122
109
|
|
|
123
|
-
|
|
110
|
+
過去の履歴データ
|
|
111
|
+
--------------------------
|
|
112
|
+
2017年 9月 16日 8時 52分 18秒
|
|
113
|
+
所要時間(score)は10.6
|
|
124
114
|
|
|
115
|
+
2015年 12月 7日 19時 59分 8秒
|
|
116
|
+
所要時間(score)は8.0
|
|
125
117
|
|
|
126
|
-
過去のbestten
|
|
127
|
-
--------------------------
|
|
128
|
-
|
|
118
|
+
2016年 1月 4日 1時 9分 11秒
|
|
129
|
-
|
|
119
|
+
所要時間(score)は7.5
|
|
130
120
|
|
|
121
|
+
2016年 1月 4日 19時 16分 8秒
|
|
131
|
-
|
|
122
|
+
所要時間(score)は9.0
|
|
132
123
|
|
|
124
|
+
2016年 1月 4日 19時 2分 44秒
|
|
125
|
+
所要時間(score)は7.5
|
|
133
126
|
|
|
127
|
+
2016年 1月 4日 22時 31分 52秒
|
|
128
|
+
所要時間(score)は9.3
|
|
134
129
|
|
|
130
|
+
2016年 1月 4日 23時 33分 50秒
|
|
131
|
+
所要時間(score)は10.2
|
|
132
|
+
|
|
133
|
+
2016年 1月 31日 21時 9分 53秒
|
|
134
|
+
所要時間(score)は7.0
|
|
135
|
+
|
|
136
|
+
2016年 2月 2日 8時 49分 9秒
|
|
137
|
+
所要時間(score)は9.4
|
|
138
|
+
|
|
139
|
+
2016年 2月 27日 12時 45分 26秒
|
|
140
|
+
所要時間(score)は13.0
|
|
141
|
+
|
|
142
|
+
2016年 2月 28日 2時 27分 20秒
|
|
143
|
+
所要時間(score)は7.4
|
|
144
|
+
|
|
145
|
+
2016年 5月 2日 16時 43分 32秒
|
|
146
|
+
所要時間(score)は6.3
|
|
147
|
+
|
|
148
|
+
2017年 9月 14日 10時 21分 18秒
|
|
149
|
+
所要時間(score)は6.0
|
|
150
|
+
|
|
151
|
+
count1は13
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
C:\MinGW\users\chap09\kadai>
|
|
155
|
+
|
|
135
156
|
実行結果(望む結果)
|
|
136
157
|
|
|
137
158
|
C:\MinGW\users\chap09\kadai>gcc -I. -o test6 test6.c -Wall
|