algorytm.org

Implementacja w C#



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Wyznaczanie dnia tygodnia - Implementacja w C#
Ocena użytkownikóww: *****  / 2
SłabyŚwietny
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]);
		}
	}
}
Dodaj komentarz