Pascal

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Pascal</language>

===An welchem Datum war Ostern in den vergangenen Jahren?===

<code rows="30">
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">
var year: integer;
begin
  year := random(100)+1900;
  writeln('In year '+intToStr(year)+' was eastern sunday on '+EasterSunday(year));
end.</eval>

===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>