C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

特定の年のカレンダーをC++で印刷します


この問題では、1年が与えられ、その年のカレンダーを印刷したいと思います。

年のカレンダーには、その月のすべての日付のすべての日、月が表示されます。そして、ここでは、今年のカレンダーを返すプログラムを作成します。

このためには、次のような計算が必要になります。

特定の月の日数

1月、3月、5月、7月、8月、10月、12月は31日です。

2月はうるう年では28日、うるう年では29日です。

4月、6月、9月、11月は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

  1. 特定のソースから宛先までのすべてのパスをC++で出力します

    この問題では、有向グラフが与えられ、グラフのソースから宛先までのすべてのパスを印刷する必要があります。 有向グラフ は、頂点aからbに向けられたエッジを持つグラフです。 問題を理解するために例を見てみましょう ソース=K宛先=P 出力: K -> T -> Y -> A -> P K -> T -> Y -> P K -> A -> P ここで、KからPへのパスを見つけました。パスをトラバースし、KからPに向かうすべてのパスを出力しました。 この問題を解決するために、深さ優先探索を使用してグラフをトラバースします。

  2. C++での切断されたグラフのBFS

    切断されたグラフ は、1つ以上のノードがグラフの端点ではない、つまり接続されていないグラフです。 切断されたグラフ… 現在、Simple BFSは、グラフが接続されている場合、つまりグラフのすべての頂点にグラフの1つのノードからアクセスできる場合にのみ適用できます。上記の切断されたグラフの手法では、いくつかの法則にアクセスできないため不可能です。したがって、切断されたグラフで幅優先探索を実行するには、次の変更されたプログラムの方が適しています。 例 #include<bits/stdc++.h> using namespace std; void insertnode(v