[pascal] Problem z losowaniem.

0

Witam!
Potrzebuje waszej pomocy poniewaz napisalem procedure ktora ma losowac pytania i nastepnie przechodzic do tych pytan lecz nie wiem co zle zrobilem i niestety nie losuje :/
Przeszukalem forum, wiem ze bylo o tym wiele razy, ale niestety nadal nie moge sobie z tym poradzic.

procedure losowanie;
          begin
          i:=1;
          randomize;
          pytanie[0]:=random(31);
          while i<30 do
           begin
           bylo:=false;
            wylosowano:=random(31);
            for j:=0 to i do
             begin
              if pytanie[j]=wylosowano then
               begin
                bylo:=true;
                break;
               end;
             end;
           end;
              if bylo=false then
               begin
                pytanie[j]:=wylosowano;
                i:=i+1;
                if pytanie[j]=1 then pytanie1;
               end;
              end;

Dlaczego na procedura nie losuje prawidlowo?
Pozdrawiam!
</delphi>

0

tutaj jest troche inny kod realizujący losowanie:

procedure losuj;
const
L_Pytan=30;
ZAKRES=30;
var
i,x:integer;
pytania:array[1..L_Pytan] of integer;
czybylo:array[1..L_Pytan] of boolean;
begin
randomize;
for i:=1 to L_Pytan do
czybylo[i]:=false;
     for i:=1 to L_Pytan do
     begin
          repeat
          x:=random(ZAKRES)+1; // losowanie z zakresu od 1 do ZAKRES
          until czybylo[x]=false;
     czybylo[x]:=true;
     pytania[i]:=x;
     end;
for i:=1 to L_Pytan do
writeln(pytania[i]);
end;
0

bo chyba porównywanie powinieneś mieć do i - 1 a nie do samego i, poza tym sprawdzanie jest w pętli a przypisanie już poza, jakbyś dobrze ustawić wcięcia to byś o tym wiedział

Edek11 napisał(a)

Pozdrawiam!
</delphi>

all right !

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