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

C++の曜日


日付(日、月、年)があるとします。この日付から、その指定された日付の曜日を見つける必要があります。これを解決するために、ツェラーのアルゴリズムを使用します。ツェラーのアルゴリズムを使用して平日を見つける式はこちらです

𝑤=$$\ lgroupd + \ lfloor \ frac {13(m + 1)} {5} \ rfloor + y + \ lfloor \ frac {y} {4} \ rfloor + \ lfloor \ frac {c} {4} \ rfloor + 5c \ rgroup mod 7 $$

式にはいくつかの変数が含まれています。彼らは-

d −日付の日。

m −月コードです。 3月から12月の場合は3から12、1月の場合は13、2月の場合は14です。1月または2月を考慮すると、指定された年は1減少します。

y −年の最後の2桁

c −年の最初の2桁

w −平日。 0の場合は土曜日、6の場合は金曜日を意味します

たとえば、1997年1月4日の平日を取得する場合、出力は「土曜日」になります

アルゴリズムは次のとおりです-

アルゴリズム

zellersAlgorithm(日、月、年)

入力 −その日の日付。

出力 −それはどの日でしたか(日曜日から土曜日)。

Begin
   if month > 2, then
      mon := month
   else
      mon := 12 + month
      decrease year by 1
   y := last two digit of the year
   c := first two digit of the year
   w := day + floor((13*(mon+1))/5) + y + floor(y/4) + floor(c/4) + 5*c
   w := w mod 7
   return weekday[w] //weekday will hold days from Saturday to Friday
End

例(C ++)

#include
#include
using namespace std;
string weekday[7] = {"Saturday","Sunday","Monday","Tuesday", "Wednesday","Thursday","Friday"};
string zellersAlgorithm(int day, int month, int year){
   int mon;
   if(month > 2)
      mon = month; //for march to december month code is same as month
   else{
      mon = (12+month); //for Jan and Feb, month code will be 13 and 14
      year--; //decrease year for month Jan and Feb
   }
   int y = year % 100; //last two digit
   int c = year / 100; //first two digit
   int w = (day + floor((13*(mon+1))/5) + y + floor(y/4) + floor(c/4) + (5*c));
   w = w % 7;
   return weekday[w];
}
int main(){
   int day, month, year;
   cout << "Enter Day: "; cin >>day;
   cout << "Enter Month: "; cin >>month;
   cout << "Enter Year: "; cin >>year;
   cout << "It was: " <<zellersAlgorithm(day, month, year);
}

入力

(4, 1, 1997)

出力

Enter Day: 4
Enter Month: 1
Enter Year: 1997
It was: Saturday

  1. C++のMazeII

    空のスペースと壁のある迷路の中にボールがあるとします。これで、ボールは上、下、左、右などの任意の方向に転がることで空のパスを通過できますが、壁にぶつかるまで転がりが止まりません。ボールが止まると、次の方向を選択できます。 ボールの位置、目的地、迷路を開始する必要があります。ボールが目的地に停止するための最短距離を見つける必要があります。ここで、距離は実際にはボールで覆われている空のセルの数によって定義されます(開始位置を除く、開始位置を含む)。それが目的地でボールを止めることが不可能な場合は、-1を返します。 迷路は1つの2D配列で表されます。ここで、1は壁を示し、0は空きスペースを示しま

  2. C++の迷路

    空のスペースと壁のある迷路の中にボールがあるとします。これで、ボールは上、下、左、右などの任意の方向に転がることで空のパスを通過できますが、壁にぶつかるまで転がりが止まりません。ボールが止まると、次の方向を選択できます。 ボールの位置、目的地、迷路を開始し、ボールが目的地に止まるかどうかを確認する必要があります。迷路は1つの2D配列で表されます。ここで、1は壁を示し、0は空きスペースを示します。迷路の境界はすべて壁です。開始座標と宛先座標は、行と列のインデックスで表されます。 したがって、入力が2D配列で表される迷路のようなものである場合 0 0 1 0 0