回答編集履歴

4

改行文字の追加

2017/10/12 15:51

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  return print_score_datum_w_format(
52
52
 
53
- "%d年 %d月 %d日 %d時 %d分 %d秒: %f", src
53
+ "%d年 %d月 %d日 %d時 %d分 %d秒: %f\n", src
54
54
 
55
55
  );
56
56
 
@@ -76,7 +76,7 @@
76
76
 
77
77
  return fscanf_score_datum_w_format(
78
78
 
79
- fp, "%d%d%d%d%d%d%lf", dst
79
+ fp, "%d%d%d%d%d%d%lf\n", dst
80
80
 
81
81
  );
82
82
 
@@ -106,11 +106,11 @@
106
106
 
107
107
 
108
108
 
109
- if (p3_score > q3_score) return 1;
109
+ if (p_score > q_score) return 1;
110
110
 
111
- else if(p3_score < q3_score) return -1;
111
+ else if(p_score < q_score) return -1;
112
112
 
113
- else return 0;
113
+ else return 0;
114
114
 
115
115
  }
116
116
 

3

追記

2017/10/12 15:51

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -21,3 +21,97 @@
21
21
  どちらかというと、前々から言っているとおりに、構造体の入出力を関数にした方がいいです。
22
22
 
23
23
  毎度毎度%d%d%d... と打つのは非効率的ですし、コードも汚れてバグの原因となります。
24
+
25
+
26
+
27
+ コメントを受けて
28
+
29
+ ---
30
+
31
+ こんな感じでしょうか。
32
+
33
+ 前も同じようなコードをお見せした覚えがありますが...
34
+
35
+ ```C
36
+
37
+ typedef struct {
38
+
39
+ int tm_year; int tm_mon; int tm_mday;
40
+
41
+ int tm_hour; int tm_min; int tm_sec;
42
+
43
+ double score;
44
+
45
+ } SCORE_DATUM;
46
+
47
+
48
+
49
+ int print_score_datum(const SCORE_DATUM *src) {
50
+
51
+ return print_score_datum_w_format(
52
+
53
+ "%d年 %d月 %d日 %d時 %d分 %d秒: %f", src
54
+
55
+ );
56
+
57
+ }
58
+
59
+ int print_score_datum_w_format(const char *format, const SCORE_DATUM *src) {
60
+
61
+ return printf(format,
62
+
63
+ src->tm_year, src->tm_mon, src->tm_mday,
64
+
65
+ src->tm_hour, src->tm_min, src->tm_sec,
66
+
67
+ src->score
68
+
69
+ );
70
+
71
+ }
72
+
73
+
74
+
75
+ int fscanf_score_datum(FILE *fp, SCORE_DATUM *dst) {
76
+
77
+ return fscanf_score_datum_w_format(
78
+
79
+ fp, "%d%d%d%d%d%d%lf", dst
80
+
81
+ );
82
+
83
+ }
84
+
85
+ int fscanf_score_datum_w_format(FILE *fp, const char *format, SCORE_DATUM *dst) {
86
+
87
+ return fscanf(fp, format,
88
+
89
+ &src->tm_year, &src->tm_mon, &src->tm_mday,
90
+
91
+ &src->tm_hour, &src->tm_min, &src->tm_sec,
92
+
93
+ &src->score
94
+
95
+ );
96
+
97
+ }
98
+
99
+
100
+
101
+ int cmp_score_datum(const void *p, const void *q) {
102
+
103
+ double p_score=((SCORE_DATUM *)p)->score;
104
+
105
+ double q_score=((SCORE_DATUM *)q)->score;
106
+
107
+
108
+
109
+ if (p3_score > q3_score) return 1;
110
+
111
+ else if(p3_score < q3_score) return -1;
112
+
113
+ else return 0;
114
+
115
+ }
116
+
117
+ ```

2

修正

2017/10/12 14:54

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  ファイルのオープンに失敗したときの対応が違うだけですね。
16
16
 
17
- そこ以降はまとめて大丈夫でしょう。
17
+ そこ以降はまとめて大丈夫ですが... 対応を統一すればよいのでは?
18
18
 
19
19
 
20
20
 

1

追記

2017/10/12 06:40

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -19,3 +19,5 @@
19
19
 
20
20
 
21
21
  どちらかというと、前々から言っているとおりに、構造体の入出力を関数にした方がいいです。
22
+
23
+ 毎度毎度%d%d%d... と打つのは非効率的ですし、コードも汚れてバグの原因となります。