Darmowe Forum
Grudzień 22, 2024, 04:27:15 *
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: Forum zostaÂło uruchomione!
 
   Strona główna   Pomoc Zaloguj się Rejestracja  
Strony: [1]
  Drukuj  
Autor Wątek: Sortowanie  (Przeczytany 2567 razy)
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« : 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.
« Ostatnia zmiana: Marzec 26, 2012, 09:01:45 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #1 : 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.
« Ostatnia zmiana: Marzec 26, 2012, 10:41:03 wysłane przez admin » Zapisane
Strony: [1]
  Drukuj  
 
Skocz do:  

Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC | Sitemap

Polityka cookies
Darmowe Fora | Darmowe Forum

moikrewni gang-nd articz blackmoon mylittlepony