Nadesłany przez Tomasz Lubiński, 02 marca 2008 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
dzien_tyg_cs/Dzien.cs:
using System; // Wyznaczanie dnia tygodnia // www.algorytm.org // (c)2008 by Tomasz Lubinski namespace dzien_tyg_cs { /// <summary> /// Wyznaczanie dnia tygodnia /// </summary> class Dzien { /// <summary> /// tablica z nazwami dni tygodnia /// </summary> public static string[] tydzien = {"poniedziałek", "wtorek", "sroda", "czwartek", "piatek", "sobota", "niedziela"}; /// <summary> /// tablica z liczbą dni od początku roku (nieprzestepnego) dla kolejnych miesiecy /// </summary> public static int[] liczbaDni = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; /// <summary> /// Sprawdza czy podany rok jest przestepny /// </summary> /// <param name="rok">rok ktory ma byc sprawdzony</param> /// <returns>true jezeli podany rok jest przestepny, /// false w przeciwnym przypadku</returns> public static bool przestepny(int rok) { return ((rok % 4 == 0 && rok % 100 != 0) || rok % 400 == 0); } /// <summary> /// Dla podanej daty wyznacza dzien tygodnia /// </summary> /// <param name="dzien">dzien daty</param> /// <param name="miesiac">miesiac daty</param> /// <param name="rok">rok daty</param> /// <returns>0 - poniedziałek, 1 - wtorek, ... 6 - niedziela</returns> public static int dzienTygodnia(int dzien, int miesiac, int rok) { int dzienRoku; int yy, c, g; int wynik; dzienRoku = dzien + liczbaDni[miesiac-1]; if ((miesiac > 2) && (przestepny(rok) == true)) dzienRoku++; yy = (rok - 1) % 100; c = (rok - 1) - yy; g = yy + (yy / 4); wynik = (((((c / 100) % 4) * 5) + g) % 7); wynik += dzienRoku - 1; wynik %= 7; return wynik; } /// <summary> /// pobiera dane od uzytkownika, oblicza dzien tygodnia. /// </summary> [STAThread] static void Main(string[] args) { int m, r, d, wynik; Console.WriteLine("Podaj dla jakiej daty obliczyc dzien tygodnia."); Console.WriteLine("Podaj dzien:"); d = int.Parse(Console.ReadLine()); Console.WriteLine("Podaj miesiac:"); m = int.Parse(Console.ReadLine()); Console.WriteLine("Podaj rok:"); r = int.Parse(Console.ReadLine()); wynik = dzienTygodnia(d, m, r); Console.WriteLine("Dzien tygodnia dla podanej daty to " + tydzien[wynik]); } } }