PASCAL! Mam napisany program ale ma on jeden minus. Program pokazuje klasy, i losuje z nich uczniow, ale czasem moze byc tak, ze wylosuje kilka razy ten sam numer, a chodzi o to, zeby tak nie bylo . Trzeba cos zmienic w 'procedurze losowanie'. Oto program :

program losowanie_uczniow;
uses crt;
var zakres,ile:byte;
dalej:char;

procedure dane_klasy;
var klasa:string;
begin;
write('Klasa:');read(klasa);
write('Ilu uczniow w klasie:'); read(zakres);
write('Ilu uczniow wylosowac:'); readln(ile);
end;
procedure losowanie(ile,zakres:byte);
var i:byte; wylosowanoarray[1..10] of byte;
begin
for i:=1 to ile do wylosowano[i]:=random(zakres)+1;
write('Wylosowano uczniow:');
for i:=1 to ile do write(wylosowano[i],',');
end;
begin
clrscr;
randomize;
repeat
dane_klasy;
losowanie(ile,zakres);
writeln; writeln;
write('Czy losowac z nastepnej klasy (t/n)?');
writeln;
until dalej='n';
write('Nacisnij dowolny klawisz aby zakonczyc.');
repeat until keypressed;
end.

1

Odpowiedzi

Najlepsza Odpowiedź!
  • capo
  • Rozwiązujący
2010-03-13T18:14:27+01:00
Program losowanie_uczniow;

{$APPTYPE CONSOLE}

//uses
//crt;

var
zakres,ile:byte;
dalej:char;

{procedurki}
procedure dane_klasy;
var
klasa:string;

begin;
write('Klasa: ');
readln(klasa);
write('Ilu uczniow w klasie: ');
readln(zakres);
write('Ilu uczniow wylosowac: ');
readln(ile);
end;

procedure losowanie(ile, zakres :byte);
var
i, j, a:byte;
wylosowano: array[1..10] of byte;
powtorka :boolean;

begin
wylosowano[ 1 ]:= random(zakres)+1;
powtorka:= false;
for i:=2 to ile do
begin
a:= random(zakres)+1;
repeat
powtorka:= false;
for j:= 1 to i- 1 do
begin
if (a= wylosowano[ j ]) then
begin
a:= random(zakres)+1;
powtorka:= true;
end
end
until (powtorka= false);
wylosowano[ i ]:= a;
end;

write('Wylosowano uczniow:');
for i:=1 to ile do
write(wylosowano[i],',');
end;

{cialo programu}
begin
//clrscr;
randomize;
repeat
dane_klasy;
losowanie(ile,zakres);
writeln;
writeln;
write('Czy losowac z nastepnej klasy (t/n)?');
readln(dalej);
until dalej='n';

write('Nacisnij enter aby zakonczyc.');
readln
end.





// w zalaczniku dalem plik .exe jako potwierdzenie ze przynajmniej u mnie to dzialalo ;) i plik .txt jako wersja z wcieciami