teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

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

2019/07/31 08:23

投稿

kokok
kokok

スコア145

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++)

2019/07/31 08:23

投稿

kokok
kokok

スコア145

title CHANGED
File without changes
body CHANGED
@@ -96,7 +96,7 @@
96
96
 
97
97
  int month;
98
98
 
99
- for (month = JAN; month < DEC; month++) {
99
+ for (month = JAN; month < N_MONTH ; month++) {
100
100
 
101
101
 
102
102
  }