質問編集履歴

2

追記部分-- int calendarmake 関数のコード

2019/07/31 08:23

投稿

kokok
kokok

スコア145

test CHANGED
File without changes
test CHANGED
@@ -12,6 +12,14 @@
12
12
 
13
13
 
14
14
 
15
+ enum M_LIST { JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOW, DEC, N_MONTH };
16
+
17
+ enum W_LIST { SUN, MON, TUE, WED, THU, FRI, SAT, N_WEEK };
18
+
19
+ int monthdays[] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; //月の日数
20
+
21
+
22
+
15
23
  //プロトタイプの宣言
16
24
 
17
25
  int januaryoneday(int year);
@@ -22,11 +30,7 @@
22
30
 
23
31
 
24
32
 
25
- enum M_LIST { JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOW, DEC, N_MONTH };
33
+
26
-
27
- enum W_LIST { SUN, MON, TUE, WED, THU, FRI, SAT, N_WEEK };
28
-
29
- int monthdays[] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; //月の日数
30
34
 
31
35
 
32
36
 
@@ -126,6 +130,18 @@
126
130
 
127
131
 
128
132
 
133
+
134
+
135
+
136
+
137
+ int c = calendarmake(calendar, week); // カレンダーで表示された最後の曜日
138
+
139
+
140
+
141
+ printf("%s\n", weeks[c]);
142
+
143
+
144
+
129
145
  }
130
146
 
131
147
 
@@ -192,16 +208,70 @@
192
208
 
193
209
  int month;
194
210
 
195
-
211
+ int col;
212
+
196
-
213
+ int row;
214
+
215
+ int day = 0;
216
+
217
+
218
+
219
+
220
+
197
- for (month = JAN; month < N_MONTH ; month++) {
221
+ for (month = JAN; month < DEC; month++) {
222
+
223
+
224
+
198
-
225
+ for (row = 0; row < ROW_SIZE; row++) {
226
+
227
+
228
+
199
-
229
+ for (col = 0; col < N_WEEK; col++) {
230
+
231
+
232
+
200
-
233
+ if (row == 0 && col < week) {
234
+
235
+
236
+
201
-
237
+ continue;
238
+
239
+ }
240
+
241
+
242
+
243
+ day++;
244
+
245
+
246
+
247
+ calendar[month][row][col] = day;
248
+
249
+
250
+
251
+ if (monthdays[month] == day) {
252
+
253
+
254
+
255
+ week = col;
256
+
257
+
258
+
259
+ day = 0;
260
+
261
+ break;
262
+
263
+ }
264
+
265
+ }
266
+
267
+ }
202
268
 
203
269
  }
204
270
 
271
+
272
+
273
+ return week;
274
+
205
275
  }
206
276
 
207
277
 
@@ -225,3 +295,23 @@
225
295
 
226
296
 
227
297
  で三次元配列に日にちを格納したいのですが、なかなか進まなかったのでアドバイス頂けると幸いです。
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+ ---------追記-------
306
+
307
+
308
+
309
+ int calendarmake(int calendar[N_MONTH][ROW_SIZE][N_WEEK], int week )
310
+
311
+
312
+
313
+ 関数の中を書いてみました。
314
+
315
+ 自分なりに書いてみたのですが、曜日が合わないです。
316
+
317
+ アドバイス頂けると助かります。

1

コード修正   for (month = JAN; month < DEC; month++) →   for (month = JAN; month < N_MONTH ; month++)

2019/07/31 08:23

投稿

kokok
kokok

スコア145

test CHANGED
File without changes
test CHANGED
@@ -194,7 +194,7 @@
194
194
 
195
195
 
196
196
 
197
- for (month = JAN; month < DEC; month++) {
197
+ for (month = JAN; month < N_MONTH ; month++) {
198
198
 
199
199
 
200
200