回答編集履歴

1

追記を受けて

2018/06/28 05:47

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -51,3 +51,93 @@
51
51
  以上の点を踏まえて、とりあえず書いてみましょう。
52
52
 
53
53
  現状のコードは問題点が山積みなので、端から端まで指摘するのは避けたいです。
54
+
55
+
56
+
57
+ 追記を受けて
58
+
59
+ ---
60
+
61
+ まず、次の処理は全く不要です。
62
+
63
+ 二行目に至っては存在しない第3要素にアクセスしようとしてしまっています。
64
+
65
+ > ```C
66
+
67
+ int *key = item.tensu;
68
+
69
+ item.grede[3];
70
+
71
+ item.av;
72
+
73
+ > ```
74
+
75
+
76
+
77
+ それに伴って、入力処理周りも少し修正が要ります。
78
+
79
+ > ```C
80
+
81
+ for (int i = 0; i< 3; i++) {
82
+
83
+ printf("%s: ", kamokumei[i]);
84
+
85
+ // scanf("%d", &key[i]);
86
+
87
+ scanf("%d", &item.tensu[i]);
88
+
89
+ // sum += key[i];
90
+
91
+ sum += item.tensu[i];
92
+
93
+ }
94
+
95
+ > ```
96
+
97
+
98
+
99
+ また、sumの型をfloatにする必然性が全くないので、doubleにした方が良いでしょう。
100
+
101
+
102
+
103
+ ---
104
+
105
+ > 判定処理のところについてお聞きしたいのですが
106
+
107
+ 条件分岐でならば判定処理出来るのですが繰り返し処理での判定の仕方が分からないです。
108
+
109
+
110
+
111
+ 繰り返し処理は単に科目を巡回するためだけに使うのだと思います。
112
+
113
+ 成績の判定は条件分岐で良いのでは。
114
+
115
+ ```C
116
+
117
+ char *seiseki[] = {"秀", "優", "良", "可", "不可"};
118
+
119
+ for(int i = 0; i < 3; i++) {
120
+
121
+ int score = item.tensu[i];
122
+
123
+ printf("%s ", kamokumei[i]);
124
+
125
+
126
+
127
+ if(tensuが90以上) {
128
+
129
+ seiseki[0]を出力;
130
+
131
+ }
132
+
133
+ else if(tensuが80以上) {
134
+
135
+ seiseki[1]を出力;
136
+
137
+ }
138
+
139
+ 以下略
140
+
141
+ }
142
+
143
+ ```