Ocena użytkownikóww: ***** / 4
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_d/Dzien.dpr:
// Wyznaczanie dnia tygodnia
// www.algorytm.org
// (c)2008 by Tomasz Lubinski
program Dzien;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
//tablica z nazwami dni tygodnia
dzienNazwa: array [0..6] of String =
('poniedzialek', 'wtorek', 'sroda', 'czwartek', 'piatek', 'sobota', 'niedziela');
//tablica z liczbą dni od początku roku (nieprzestepnego) dla kolejnych miesiecy
liczbaDni: array [1..12] of Integer =
(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334);
//true jezeli podany rok jest przestepny,
//false w przeciwnym wypadku
function przestepny(rok: Integer): boolean;
begin
result := (((rok mod 4 = 0) and (rok mod 100 <> 0)) or (rok mod 400 = 0));
end;
//dla podanej daty wyznacza dzien tygodnia
//0 - poniedziałek, 1 - wtorek, ... 6 - niedziela
function dzienTygodnia(dzien: Integer; miesiac: Integer; rok: Integer): Integer;
var
dzienRoku, yy, c, g: Integer;
begin
dzienRoku := dzien + liczbaDni[miesiac];
if ((miesiac > 2) and (przestepny(rok) = true)) then
dzienRoku := dzienRoku + 1;
yy := (rok - 1) mod 100;
c := (rok - 1) - yy;
g := yy + (yy div 4);
result := (((((c div 100) mod 4) * 5) + g) mod 7);
result := result + dzienRoku - 1;
result := result mod 7;
end;
var
m, r, d, wynik: Integer;
begin
writeln('Podaj dla jakiej daty obliczyc dzien tygodnia.');
writeln('Podaj dzien:');
readln(d);
writeln('Podaj miesiac:');
readln(m);
writeln('Podaj rok:');
readln(r);
wynik := dzienTygodnia(d, m, r);
writeln('Dzien tygodnia dla podanej daty to ' + dzienNazwa[wynik]);
end.
Wyskakuje mi błąd, ze nie znalazł 'result' CZEKAM NA ODP...
To znaczy pierwsze wystąpienie na przestepny := a kolejne na dzienTygodnia :=