質問編集履歴
2
追記部分-- int calendarmake 関数のコード
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,16 +5,18 @@
|
|
5
5
|
|
6
6
|
#define ROW_SIZE 6 //カレンダーの行のサイズ
|
7
7
|
|
8
|
+
enum M_LIST { JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOW, DEC, N_MONTH };
|
9
|
+
enum W_LIST { SUN, MON, TUE, WED, THU, FRI, SAT, N_WEEK };
|
10
|
+
int monthdays[] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; //月の日数
|
11
|
+
|
8
12
|
//プロトタイプの宣言
|
9
13
|
int januaryoneday(int year);
|
10
14
|
int leapyear(int year);
|
11
15
|
int calendarmake(int calendar[N_MONTH][ROW_SIZE][N_WEEK], int week , int monthdays[]);
|
12
16
|
|
13
|
-
enum M_LIST { JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOW, DEC, N_MONTH };
|
14
|
-
enum W_LIST { SUN, MON, TUE, WED, THU, FRI, SAT, N_WEEK };
|
15
|
-
int monthdays[] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; //月の日数
|
16
17
|
|
17
18
|
|
19
|
+
|
18
20
|
int main(void) {
|
19
21
|
|
20
22
|
char* weeks[] = { "日","月","火","水","木","金","土" };
|
@@ -62,6 +64,12 @@
|
|
62
64
|
|
63
65
|
calendarmake(calendar[N_MONTH][ROW_SIZE][N_WEEK], week, monthdays);
|
64
66
|
|
67
|
+
|
68
|
+
|
69
|
+
int c = calendarmake(calendar, week); // カレンダーで表示された最後の曜日
|
70
|
+
|
71
|
+
printf("%s\n", weeks[c]);
|
72
|
+
|
65
73
|
}
|
66
74
|
|
67
75
|
|
@@ -95,11 +103,38 @@
|
|
95
103
|
int calendarmake(int calendar[N_MONTH][ROW_SIZE][N_WEEK], int week ) {
|
96
104
|
|
97
105
|
int month;
|
106
|
+
int col;
|
107
|
+
int row;
|
108
|
+
int day = 0;
|
98
109
|
|
99
|
-
for (month = JAN; month < N_MONTH ; month++) {
|
100
110
|
|
111
|
+
for (month = JAN; month < DEC; month++) {
|
101
112
|
|
113
|
+
for (row = 0; row < ROW_SIZE; row++) {
|
114
|
+
|
115
|
+
for (col = 0; col < N_WEEK; col++) {
|
116
|
+
|
117
|
+
if (row == 0 && col < week) {
|
118
|
+
|
119
|
+
continue;
|
120
|
+
}
|
121
|
+
|
122
|
+
day++;
|
123
|
+
|
124
|
+
calendar[month][row][col] = day;
|
125
|
+
|
126
|
+
if (monthdays[month] == day) {
|
127
|
+
|
128
|
+
week = col;
|
129
|
+
|
130
|
+
day = 0;
|
131
|
+
break;
|
132
|
+
}
|
133
|
+
}
|
134
|
+
}
|
102
135
|
}
|
136
|
+
|
137
|
+
return week;
|
103
138
|
}
|
104
139
|
|
105
140
|
|
@@ -111,4 +146,14 @@
|
|
111
146
|
int calendarmake(int calendar[N_MONTH][ROW_SIZE][N_WEEK], int week )
|
112
147
|
|
113
148
|
|
114
|
-
で三次元配列に日にちを格納したいのですが、なかなか進まなかったのでアドバイス頂けると幸いです。
|
149
|
+
で三次元配列に日にちを格納したいのですが、なかなか進まなかったのでアドバイス頂けると幸いです。
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
---------追記-------
|
154
|
+
|
155
|
+
int calendarmake(int calendar[N_MONTH][ROW_SIZE][N_WEEK], int week )
|
156
|
+
|
157
|
+
関数の中を書いてみました。
|
158
|
+
自分なりに書いてみたのですが、曜日が合わないです。
|
159
|
+
アドバイス頂けると助かります。
|
1
コード修正 for (month = JAN; month < DEC; month++) → for (month = JAN; month < N_MONTH ; month++)
title
CHANGED
File without changes
|
body
CHANGED
@@ -96,7 +96,7 @@
|
|
96
96
|
|
97
97
|
int month;
|
98
98
|
|
99
|
-
for (month = JAN; month <
|
99
|
+
for (month = JAN; month < N_MONTH ; month++) {
|
100
100
|
|
101
101
|
|
102
102
|
}
|