<!DOCTYPE HTML> <HTML> <HEAD> <TITLE>0񣔖00</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css"> </HEAD> <BODY CLASS="white"> <H2 CLASS="center"><B>0񣔖00</B></H2> <P> <DL> <DD><DIV CLASS="double"><PRE CLASS="no"> /*************************************************************/ /* 0񣔖0򣽎n-[0hQ鶵f躤 y]e鍆I */ /* Ou(e筶 */ /* cal y m : fy^tmg0n0񣔖00扱鶵 */ /* cal y m d : fy^tmgde0nf躤 y]e錪臱10扱鶵 */ /* g R筭晸1582^tN鍠M 0_0`0W y]e0oR% */ /* coded by Y.Suganuma */ /*************************************************************/ #include &lt;stdio.h> #include &lt;stdlib.h> #include &lt;string.h> /************************/ /* 0񯧘calendar0n[ */ /************************/ class Calendar { int y, m; // ^t0hg int m_d; // Ng0ne錯p int day[31]; // f躤0:e錰 eee 6:Wf int hol[31]; // y]e0nz.榐 // =-1 : y]e0g0j0D // >=0 : y]e鍀jS char h_name[5][30]; // y]e0nT RM public: /****************************/ /* _epq!0W0n0񻼜򎒾00 */ /****************************/ Calendar(){} /**************************/ /* 2 _ep0n0񻼜򎒾00 */ /* y, m : ^t0hg */ /**************************/ Calendar::Calendar(int y, int m) { /* ^t0hg0n-[ */ this->y = y; this->m = m; /* e0k0a0hf躤0n-[ */ // e0nf躤 int y1 = y; int m1 = m; int d = 1; if (m1 < 3) { y1--; m1 += 12; } int yo = (y1 + (y1 / 4) - (y1 / 100) + (y1 / 400) + (13 * m1 + 8) / 5 + d) % 7; // Ng0ne錯p if (m == 2) { if (y%4 == 0 && y%100 != 0 || y%400 == 0) m_d = 29; else m_d = 28; } else if (m == 4 || m == 6 || m == 9 || m == 11) m_d = 30; else m_d = 31; // Te0nf躤0n-[ for (int i1 = 0; i1 < m_d; i1++) { day[i1] = yo; yo = (yo + 1) % 7; } /* y]e0n-[ */ for (int i1 = 0; i1 < m_d; i1++) hol[i1] = -1; int k1; switch (m) { // g case 1: // QCege hol[0] = 0; strcpy(h_name[0], "QCe"); if (day[0] == 0) { hol[1] = 1; strcpy(h_name[1], "c/fOeQCe "); } // bN0neg0n{,gf躤 k1 = 0; for (int i1 = 0; i1 < m_d && k1 < 2; i1++) { if (day[i1] == 1) { k1++; if (k1 == 2) { hol[i1] = 2; strcpy(h_name[2], "bN0ne"); } } } break; // g case 2: // ^鶹龏_鮡ge hol[10] = 0; strcpy(h_name[0], "^鶹龏_鮡"); if (day[10] == 0) { hol[11] = 1; strcpy(h_name[1], "c/fOe^鶹龏_鮡 "); } break; // g case 3: // f%R0nege鍢 if (y < 2100) d = (int)(20.8431 + 0.242194 * (y - 1980) - (y - 1980) / 4) - 1; else d = (int)(21.8510 + 0.242194 * (y - 1980) - (y - 1980) / 4) - 1; hol[d] = 0; strcpy(h_name[0], "f%R0ne"); if (day[d] == 0) { hol[d+1] = 1; strcpy(h_name[1], "c/fOef%R0ne "); } break; // g case 4: // 00i00nege hol[28] = 0; strcpy(h_name[0], "00i00ne"); if (day[28] == 0) { hol[29] = 1; strcpy(h_name[1], "c/fOe00i00ne "); } break; // g case 5: // a瞝諍_鮡 V齦0nOe 0S0i00neg  e hol[2] = 0; strcpy(h_name[0], "a瞝諍_鮡"); hol[3] = 1; strcpy(h_name[1], "V齦0nOe"); hol[4] = 2; strcpy(h_name[2], "0S0i00ne"); if (day[4] == 0) { hol[5] = 3; strcpy(h_name[3], "c/fOe0S0i00ne "); } break; // g case 6: break; // g case 7: // mw0nege hol[19] = 0; strcpy(h_name[0], "mw0ne"); if (day[19] == 0) { hol[20] = 1; strcpy(h_name[1], "c/fOemw0ne "); } break; // g case 8: break; // g case 9: // el0nege hol[14] = 0; strcpy(h_name[0], "el0ne"); if (day[14] == 0) { hol[15] = 1; strcpy(h_name[1], "c/fOeel0ne "); } // y薘0nege鍢 if (y < 2100) d = (int)(23.2488 + 0.242194 * (y - 1980) - (y - 1980) / 4) - 1; else d = (int)(24.2488 + 0.242194 * (y - 1980) - (y - 1980) / 4) - 1; hol[d] = 2; strcpy(h_name[2], "y薘0ne"); if (day[d] == 0) { hol[d+1] = 3; strcpy(h_name[3], "c/fOey薘0ne "); } break; // g case 10: // OS0neg0n{,gf躤 k1 = 0; for (int i1 = 0; i1 < m_d && k1 < 2; i1++) { if (day[i1] == 1) { k1++; if (k1 == 2) { hol[i1] = 0; strcpy(h_name[0], "OS0ne"); } } } break; // g case 11: // e嘢0nege hol[2] = 0; strcpy(h_name[0], "e嘢0ne"); if (day[2] == 0) { hol[3] = 1; strcpy(h_name[1], "c/fOee嘢0ne "); } // R銻碼0nege hol[22] = 2; strcpy(h_name[2], "R銻碼0ne"); if (day[22] == 0) { hol[23] = 3; strcpy(h_name[3], "c/fOeR銻碼0ne "); } break; // g case 12: // Y)v噴晆ege hol[22] = 0; strcpy(h_name[0], "Y)v噴晆e"); if (day[22] == 0) { hol[23] = 1; strcpy(h_name[1], "c/fOeY)v噴晆e "); } break; } } /*****************************************/ /* e0k0a`臱10nS謃 */ /* d : e0k0a */ /* sw : =0 : y]e0g0j0D */ /* =1 : y]e */ /* name : y]e0nT RM */ /* return : f躤0:e eee 6:W */ /* (-1:0񚅐 */ /*****************************************/ int Calendar::Inf_day(int d, int *sw, char name[]) { if (d < 1 || d > m_d) { printf("***error e0k0a0LN 恑_S0g0Y\n"); exit(1); } d--; *sw = 0; int yo = day[d]; if (hol[d] >= 0) { *sw = 1; strcpy(name, h_name[hol[d]]); } return yo; } /********************/ /* 0񣔖0򣽎nQ鶵 */ /* N }0oy]e */ /*******************/ void Calendar::Out_cal() { printf(" e g pk l4 g( 懷 W\n\n"); int k = 0; while (k < day[0]) { printf(" "); k++; } int k1 = -day[0]; for (int i1 = 0; i1 < m_d; i1++) { printf(" %2d", i1+1); k++; if (k == 7 || i1 == m_d-1) { printf("\n"); for (int i2 = 0; i2 < 7 && k1 <= m_d-1; i2++) { if (k1 >= 0) { if (hol[k1] < 0) printf(" "); else printf(" "); } else printf(" "); k1++; } printf("\n"); k = 0; k1 = i1 + 1; } } } }; /****************/ /* main program */ /****************/ int main(int argc, char *argv[]) { // _ep0nep0n0򦴴0 if (argc != 3 && argc != 4) { printf("***error ^t g{I0扱eR0W0f0O0`0U0D\n"); exit(1); } // _ep0nep/+ else { // ^t g0n0򦴴0 int y = atoi(argv[1]); if (y < 2001 || y > 2150) { printf("***error 2001"f^t"f2150\n"); exit(1); } int m = atoi(argv[2]); if (m < 1 || m > 12) { printf("***error g0LN 恑_S0g0Y\n"); exit(1); } // ^t g0nP$/+ Calendar cal(y, m); // e0k0a`臱10nS謃 if (argc == 4) { char name[30]; char y_n[7][7] = {"e錰躤", "gf躤", "pkf躤", "l4f躤", "g(f躤", "懷f躤", "Wf躤"}; int d = atoi(argv[3]); int sw; int yo = cal.Inf_day(d, &sw, name); if (yo >= 0) { printf("%d^t%dg%de0%s", y, m, d, y_n[yo]); if (sw == 0) printf("\n"); else printf("0%s\n", name); } } // 0񣔖0򣽎nQ鶵 else cal.Out_cal(); } return 0; } </PRE></DIV></DD> </DL> </BODY> </HTML>