Feladat: számoljuk ki, hogy hány nap van az adott hónapban és évben

Van néhány dolog, amit tudnunk kell a naptárról, hogy képesek legyünk megoldani a problémát-

· a január, a március, a május, a július, az augusztus, az október és a december 31 naposak,

· az április, a június, a szeptember és a november 30 naposak,

· a február 28 napos, kivéve szökőévben, amikor 29 napos.

Hogyan döntjük el, hogy melyik év a szökőév? Ha az év

· osztható 4-el,

· osztható 400-al,

· de nem osztható 100-al (kivéve a 2000-es év)

az szökőév.

Így szökőév 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, 2020.

Nem szökőévek: 1700, 1800, 1900, 2100, és 2200. Szökőévek az alábbi esztendők: 1600, 2000 és 2400.

A Gergely-naptárban minden 400 évre 97 szökőév jut.

31. ábra 

 

Szintaxis:

namespace ConsoleApplication19

{

class Program

{

static void Main(string[] args)

{

System.Console.WriteLine("Adjon meg egy évszámot: pl. 2012");

string évString = System.Console.ReadLine();

int év = System.Convert.ToInt16(évString);

System.Console.Wri teLine("Adjon meg egy hónapot: pl. 8");

string hónapString = System.Console.ReadLine();

byte hónap = System.Convert.ToByte(hónapString);

int napokSzáma;

switch (hónap)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

napokSzáma = 31;

break;

case 4:

case 6:

case 9:

case 11:

napokSzáma = 30;

break;

case 2:

if (((év % 4 == 0) && !(év % 100 == 0)) || (év % 400 == 0))

{

napokSzáma = 29;

}

else

{

napokSzáma = 28;

}

break;

default:

napokSzáma = 0;

break;

}

System.Console.WriteLine("Napok száma = " + napokSzáma);

}

}

}

Ahhoz, hogy teljes mértékben megértsük a forráskódot, vessünk egy pillantást először a beolvasásra: a konvertálásnál a hónapnál elegendő a byte-ra konvertálás, míg az évnél a 16 biten ábrázolt egész számba férünk bele kényelmessen, de az igazán érdekes feladat a szökőévek kiválasztása:

if (((year % 4 == 0) && !(year % 100 == 0))|| (year % 400 == 0))

Azaz az elégazásoknál ismertetett módon, az igazságtábla alapján kell elkészíteni a komplex logikai kifejezésünket.

 

A tananyag a követkkező licenc alá esik: GNU Free Documentation License