Pascal
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Pascal</language>
===An welchem Datum war Ostern in den vergangenen Jahren?===
<code rows="30">
var year: integer;
function EasterSunday(year: Integer): String;
var
a,b,c,d,f,g : Real;
e: Integer;
begin
if year < 100 then year := year + 1900;
a := year mod 19;
b := year mod 4;
c := year mod 7;
f := 19*a + 24;
d := f - (trunc(f/30) * 30);
g := (5 + 2*b + 4*c + 6*d);
e := Trunc((g - (trunc(g/7) * 7)) + d + 22);
if e <= 31 then
Result := IntToStr(e) + '.' + '03.' + IntToStr(year)
else
begin
if e - 31 >= 26 then e:=19 else e:= e - 31;
Result := IntToStr(e) + '.' + '04.' + IntToStr(year)
end;
end;
</code>
<eval rows="10" rrows="10">
begin
year := random(100)+1900;
writeln('In year '+intToStr(year)+' was eastern sunday on '+EasterSunday(year));
end.</eval>
<check>
result := true;
</check>
<check>
result := (EasterSunday(1939) = '9.04.1939') AND (EasterSunday(1974) = '14.04.1974');
</check>
===Fibonacci-Berechnung===
<code>
function fib(n: integer): integer;
var tmp: integer;
begin
if n=1 then result := 1
else if n=2 then result := 1
else begin
tmp := fib(n-1);
result := tmp + fib(n-2);
end;
end;
</code>
<eval>
begin
writeln(intToStr(fib(8)));
end.
</eval>
===Funktionen===
<code rows="3">
function Pascal(n,r: integer): integer;
begin
result := fac(n) div (fac(r) * fac(n-r));
end;
</code>
<code>function comb(n,k: integer): integer;
var i: integer;
r: real;
begin
r:=1;
if (k>n-k) then k:=n-k;
for i:=1 to k do r:=r / i;
for i:=n downto n-k+1 do r:=r*i;
if r - trunc(r) >= 0.5 then result := trunc(r)+1
else result := trunc(r);
end;
</code>
<code rows="8">
function fac(x: integer): integer;
var i: integer;
begin
if (x=0) then result := 1
else begin
result := x;
for i:=x-1 downto 1 do result := result*i;
end;
end;
</code>
<eval rows="12">
var i,j: integer;
begin
for i:=1 to 9 do begin
for j:=0 to i do write(intToStr(comb(i,j))+' ');
writeln('');
end;
writeln(''); writeln('');
for i:=1 to 9 do begin
for j:=0 to i do write(intToStr(Pascal(i,j))+' ');
writeln('');
end;
end.
</eval>