PascalCheckTest

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Pascal</language>
== Computerraten ==

<code id="4d23a12a21944" hidden>
function computerraten_lsg(zahl, max: integer): integer;
 var anz: integer;
 function suche(li, z, re: integer): integer;
  var mi: integer;
  begin
   anz:=anz+1;
   mi:=(re+li) div 2;
   if z=mi then result:=anz
   else 
    if z<mi then result:=suche(li, z, mi)
    else
     result:=suche(mi, z, re);
  end;
 begin
  anz:=0;
  result:=suche(1, zahl, max+1);
 end;
</code>

<code id="4d23b0252e549">
function computerraten(zahl, max: integer): integer;
 var anz: integer;
 function suche(li, z, re: integer): integer;
  var mi: integer;
  begin
   anz:=anz+1;
   mi:=(re+li) div 2;
   if z=mi then result:=anz
   else 
    if z<mi then result:=suche(li, z, mi)
    else
     result:=suche(mi, z, re);
  end;
 begin
  anz:=0;
  result:=suche(1, zahl, max+1);
 end;
</code>

<check>
result:=(abs(computerraten(47, 100)-computerraten_lsg(47, 100))<3) and 
        (abs(computerraten(2345, 7777)-computerraten_lsg(2345, 7777))<3);
</check>

<run id="4d23a12a21b7a">
begin
 writeln(inttostr(computerraten(47, 100)));
end.
</run>

== Computerraten von Zufallszahlen ==

<code id="4d23a3a008364">
function computerraten_neu(zahl, max: integer): integer;
 var anz: integer;
 function suche(li, z, re: integer): integer;
  var mi: integer;
  begin
   anz:=anz+1;
   mi:=(re+li) div 2;
   if z=mi then result:=anz
   else 
    if z<mi then result:=suche(li, z, mi)
    else
     result:=suche(mi, z, re);
  end;
 begin
  anz:=0;
  result:=suche(1, zahl, max+1);
 end;

function zufallszahl(max: integer): integer;
 begin
  result:=random(max)+1;
 end;
</code>

<run id="4d23a3a008489">
begin
 writeln(inttostr(computerraten(zufallszahl(10000), 10000)));
 writeln(inttostr(computerraten_neu(zufallszahl(10000), 10000)));
end.
</run>