Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

พิมพ์ปฏิทินสำหรับปีที่กำหนดใน C++


ในปัญหานี้เราได้รับหนึ่งปีและเราต้องการพิมพ์ปฏิทินสำหรับปีนั้น

ปฏิทินปีแสดงทุกวัน เดือน ทุกวันของเดือน และที่นี่เราจะสร้างโปรแกรมที่จะคืนปฏิทินของปีปัจจุบัน

สำหรับสิ่งนี้เราจะต้องมีการคำนวณบางอย่างเช่น

จำนวนวันในเดือนใดเดือนหนึ่ง

มกราคม มีนาคม พฤษภาคม กรกฎาคม สิงหาคม ตุลาคม ธันวาคม มี 31 วัน

กุมภาพันธ์มี 28 วันในปีอธิกสุรทินและ 29 วันในปีอธิกสุรทิน

เมษายน มิถุนายน กันยายน พฤศจิกายน มี 30 วัน

วันเริ่มต้น (วันธรรมดา) ของเดือน

ตามปีและเดือน จะพบวันทำงานในวันที่ 1 ของทุกเดือน

ตัวอย่าง

คราวนี้มาสร้างโปรแกรมพิมพ์ปฏิทินปี 2020 กัน −

#include<iostream>
using namespace std;
int dayNumber(int day, int month, int year){
   static int t[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 };
   year -= month < 3;
   return ( year + year/4 - year/100 + year/400 + t[month-1] + day) % 7;
}
string getMonthName(int monthNumber){
   string months[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
   return (months[monthNumber]);
}
int numberOfDays (int monthNumber, int year){
   switch(monthNumber){
      case 0 :
      case 2 :
      case 4 :
      case 6 :
      case 7 :
      case 9 :
      case 11: return(31);
      break;
      case 1 :
         if (year % 400 == 0 || (year % 4 == 0 && year %100 != 0))
            return (29);
         else
            return (28);
      break;
      case 3 :
      case 5 :
      case 8 :
      case 10 : return(30);
      break;
   }
}
void printCalendar(int year){
   cout<<"\t\t\t Calendar - Year "<<year;
   int days;
   int current = dayNumber (1, 1, year);
   for (int i = 0; i < 12; i++){
      days = numberOfDays (i, year);
      cout<<endl<<"\t\t ----X----"<<getMonthName (i).c_str()<<"----X---- \t\t"<<endl;
      cout<<" Sun Mon Tue Wed Thu Fri Sat \n";
      int k;
      for (k = 0; k < current; k++)
         cout<<"\t";
      for (int j = 1; j <= days; j++){
         printf("%5d", j);
         if (++k > 6){
            k = 0;
            cout<<endl;
         }
      }
      if (k)
         cout<<endl;
         current = k;
      }
   return;
}
int main(){
   int year = 2019;
   printCalendar(year);
   return (0);
}

ผลลัพธ์

Calendar - Year 2019
----X----January----X----
Sun Mon Tue Wed Thu Fri Sat
         1   2   3   4   5
6    7   8   9   10  11 12
13   14  15  16  17  18 19
20   21  22  23  24 25 26
27   28  29  30   31
----X----February----X----
Sun Mon Tue Wed Thu Fri Sat
                     1   2
3    4   5    6   7   8   9
10   11  12   13  14  15 16
17   18  19   20   21 22 23
24    25  26  27   28
----X----March----X----
Sun Mon Tue Wed Thu Fri Sat
                     1  2
3    4    5   6  7   8   9
10   11 12   13  14 15   16
17   18 19   20  21 22  23
24   25 26   27 28 29 30
31
----X----April----X----
Sun Mon Tue Wed Thu Fri Sat
     1    2  3   4   5   6
7    8    9 10   11 12   13
14  15    16 17   18 19  20
21  22  23   24  25  26 27
28 29   30
----X----May----X----
Sun Mon Tue Wed Thu Fri Sat
             1    2  3  4
5    6    7  8    9 10 11
12   13   14 15  16  17 18
19   20   21 22 23  24  25
26   27  28 29  30   31
----X----June----X----
Sun Mon Tue Wed Thu Fri Sat
                        1
2    3    4   5  6 7    8
9    10  11 12 13 14 15
16    17 18 19 20 21 22
23    24 25 26 27 28 29
30
----X----July----X----
Sun Mon Tue Wed Thu Fri Sat
      1    2  3    4   5 6
7    8    9    10 11 12 13
14    15 16    17 18 19 20
21 22 23    24    25 26 27
28 29 30 31
----X----August----X----
Sun Mon Tue Wed Thu Fri Sat
                  1  2   3
4    5    6    7  8    9 10
11  12  13  14   15 16 17
18  19  20   21  22 23 24
25 26  27   28  29 30 31
----X----September----X----
Sun Mon Tue Wed Thu Fri Sat
1    2    3   4  5   6 7
8    9    10  11 12 13 14
15  16  17   18 19 20 21
22  23 24 25 26 27 28
29 30
----X----October----X----
Sun Mon Tue Wed Thu Fri Sat
         1   2  3   4   5
6    7   8   9 10  11   12
13  14 15   16 17   18 19
20  21   22 23 24   25 26
27  28  29   30 31
----X----November----X----
Sun Mon Tue Wed Thu Fri Sat
                     1   2
3    4    5  6   7   8   9
10   11   12 13 14   15 16
17   18   19  20 21 22 23
24   25   26   27 28 29 30
----X----December----X----
Sun Mon Tue Wed Thu Fri Sat
1    2   3   4   5   6   7
8    9   10  11  12 13  14
15   16  17  18  19 20  21
22   23  24  25  26 27  28
29   30   31