Symulator multilotka

0

Napisałem symulator moltilotka lae nie wiem czemu nie działa i po pierwszej pętli wywala exit with exitcode 201 czy jakoś tak :/

[code]
program symulator_multilotka;
uses crt;

var
i,j,wynik:integer;
tab:array[1..10] of integer;
tab2:array[1..20] of real;

begin
clrscr;

for i:=1 to 10 do
begin
writeln('Podaj 10 liczb do systemu multilotka:');
readln(tab[i]);
clrscr;
end;

for j:=1 to 20 do
begin
repeat
tab2[j]:=random(81);
until (tab2[j]<>0) AND (tab2[j]<>tab2[j-1]);
end;

wynik:=0;
for i:=1 to 10 do
begin
for j:=1 to 20 do
if tab[i]=tab2[j] then
wynik:=wynik+1;
end;
write('Zgadłeś ',wynik,'liczb');
end.

[/code]

0

tab2[j]<>tab2[j-1]

Przy pierwszej iteracji drugiej pętli jest to odwołanie do elementu tablicy tab2 o indeksie 0. Może to jest przyczyną problemu.

0
program MultiSymulator;

{$APPTYPE CONSOLE}

  Const LiczbaKul = 49 ; // dla totolotka 49
  Const Losujemy =  6; // dla totolotka 6

  type TWynik = array [0..Losujemy-1] of byte;


  function Porownaj (Losowane,Typowane:TWynik) :byte;
  var
  i,j ,wynik :byte;
  begin
  Wynik:=0;
  for i:= 0 to Losujemy-1 do
  for j:= 0 to Losujemy-1 do
  if  Losowane[i] = Typowane[j] then inc(Wynik);
  Porownaj:=Wynik;

  end;

  function MultiLotek :TWynik ;
  var
  Wynik:TWynik;
  Beben: array[0..LiczbaKul-1] of byte;
  i,iloscKul,Wylosowano:byte;

  begin
  Randomize;
  iloscKul:=LiczbaKul;
  for i:= 0 to LiczbaKul-1 do
  Beben[i]:=i+1;

  for  i:= 0 to Losujemy-1 do
    begin
    Wylosowano:=Random(IloscKul); //losuje kule
    Wynik[i]:=Beben[Wylosowano];  // wpisuje kule
    Beben[Wylosowano]:=Beben[IloscKul-1]; //wylosowana zastepuje ostatnia ;
    Dec(IloscKul);
    end;
    MultiLotek:=Wynik;

  end;

  var
  Wylosowane,Wytypowane:TWynik;
  i,j,liczba:byte;

begin
//------------------------------------------------------

While (i< losujemy ) do
begin
writeln('Podaj ', i+1,' liczbe do systemu multilotka:');
readln(Wytypowane[i]);
 if ((wytypowane[i]< 1 ) or (wytypowane[i]>LiczbaKul)) then
      writeln('Liczba niedozwolona!') else
  begin
    j:= 0;
    While ((j<i-1)or (Wytypowane[j] <> Wytypowane [i]))do
    inc(j);
    if j=i then inc(i) else writeln('Podales juz taka liczbe!');
  end;

end;
//-------------------------------------------------------------
Write('Wylosowano : ') ;
Wylosowane:=MultiLotek;
for i:=0 to Losujemy-1 do Write(Wylosowane[i],',');
Writeln(' zgadles ',Porownaj(Wylosowane,Wytypowane),' Liczb.');
readln;

end.
0

A jak zrobić w postaci okienkowej?

1 użytkowników online, w tym zalogowanych: 0, gości: 1