Darmowe Forum

Turbo Pascal => Turbo Pascal semestr II => W±tek zaczêty przez: admin Marzec 26, 2012, 08:56:09



Tytu³: Sortowanie
Wiadomo¶æ wys³ana przez: admin Marzec 26, 2012, 08:56:09
Napisaæ program który prosi o podanie nazwiska i oceny ucznia. Imie i nazwisko umieszczone ma zostaæ w rekordzie. Zadeklarowaæ tablicê rekordów sk³adaj±ca siê z 10 pól. Nastêpnie wprowadziæ zmienne (nazwisko, ocena). Wykorzystuj±c sortowanie uporz±dkowaæ uczniów w kolejno¶ci otrzymanych ocen.Wykorzystaæ sortowanie b±belkowe.

program as;
uses crt, dos;
type
uczen = record
nazwisko: string;
ocena: Byte;
end;
procedure Sort(var X: array of uczen);
var
Temp: uczen;
r: Integer;
zmiana: Boolean;
begin
repeat
zmiana:= False;
for r:= 0 to High(X) - 1 do
if X[r].ocena < X[r + 1].ocena then
begin
Temp:= X[r];
X[r]:= X[r + 1];
X[r + 1]:= Temp;
zmiana:= True;
end;
until not zmiana;
end;
var
uczniowie: array [0 .. 9] of uczen;
r: Integer;
begin
Writeln('Prosze podac nazwiska i oceny 10 uczniow');
for r:= 0 to High(uczniowie) do
begin
Write('Uczen #', r + 1, ' nazwisko : ');
Readln(uczniowie[r].nazwisko);
Write('uczen #', r + 1, ' ocena : ');
Readln(uczniowie[r].ocena);
Writeln;
end;
Sort(uczniowie);
Writeln;
Writeln('Oceny po sortowaniu: ');
Writeln('----------------------');
for r:= 0 to High(uczniowie) do
begin
Writeln('# ', r + 1, ' ', uczniowie[r].nazwisko,
' otrzymal ocene (', uczniowie[r].ocena, ')');
end;
Write('Nacisnij dowolny klawisz by wyjsc');
Readln;
end.


Tytu³: Odp: Sortowanie
Wiadomo¶æ wys³ana przez: admin Marzec 26, 2012, 10:18:34
Sortowanie przez wybieranie jest podobne do sortowania b±belkowego lecz algorytm jest du¿o szybszy.

program wybieranie;
uses crt,dos;
procedure wyb(var X: array of Integer);
var
r: Integer;
j: Integer;
mala: Integer;
mniejsza: Integer;
begin
for r:= 0 to High(X) -1 do
begin
mala:= r;
mniejsza:= X[mala];
for j:= r + 1 to High(X) do
if X[j] < mniejsza then
begin
mala:= j;
mniejsza:= X[mala];
end;
X[mala]:= X[r];
X[r]:= mniejsza;
end;
end;

var
liczby: array [0 .. 9] of Integer;
r: Integer;
begin
Writeln('Prosze podac 10 liczb');
for r:= 0 to High(liczby) do
begin
Write('#', r + 1, ': ');
Readln(liczby[r]);
end;
wyb(liczby);
Writeln;
Writeln('Liczby po sortowaniu: ');
for r:= 0 to High(liczby) do
begin
Writeln(liczby[r]);
end;
Write('Nacisnij dowolny klawisz aby zamknac');
readln;
end.


Polityka cookies
Darmowe Fora | Darmowe Forum

proskills articz polski-serwer-rpg moikrewni spw