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

<eval></eval>