algorytm.org

Implementacja w C/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/C++
Ocena użytkownikóww: *****  / 12
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.c:
// Wyznaczanie dnia tygodnia
// www.algorytm.org
// (c)2008 by Tomasz Lubinski

#include "stdio.h"

//tablica z nazwami dni tygodnia
char *tydzien[] =
	{"poniedzialek", "wtorek", "sroda", "czwartek", "piatek", "sobota", "niedziela"};

//tablica z liczba dni od początku roku (nieprzestepnego) dla kolejnych miesiecy
 int liczbaDni[] =
	{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};

//1 jezeli podany rok jest przestepny,
//0 w przeciwnym wypadku
int przestepny(int rok) {
	return ((rok % 4 == 0  &&  rok % 100 != 0) || rok % 400 == 0);
}

//dla podanej daty wyznacza dzien tygodnia
//0 - poniedziałek, 1 - wtorek, ... 6 - niedziela
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) == 1))
		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;
}
	
//pobiera dane od uzytkownika, oblicza dzien tygodnia
int main() {
	int m, r, d, wynik;

	printf("Podaj dla jakiej daty obliczyc dzien tygodnia.\n");

	printf("Podaj dzien:\n");
	scanf("%d", &d);
	printf("Podaj miesiac:\n");
	scanf("%d", &m);
	printf("Podaj rok:\n");
	scanf("%d", &r);

	wynik = dzienTygodnia(d, m, r);
	printf("Dzien tygodnia dla podanej daty to %s.\n", tydzien[wynik]);

        return 0;
}
Dodaj komentarz