Już jest ok, program działa. zamieszczam kod programu- może komuś kiedyś się przydać.
i krótko wyjaśnię jak działa ten program. Mam nadzieję, że to pomoże początkującym programistom
Kod: Zaznacz cały
program bmbel;
uses
Crt;
var
i,j,tmp:integer;
tab:array [1..15] of integer; {i do 15 to ilość elementów tablicy}
BEGIN
clrscr;
randomize;
writeln ('tablica przed sortowaniem');
for i:=1 to 15 do
begin
tab [i]:=random(100); {przypisujemy każdemu elementowi tablicy wartość losową}
writeln (tab[i]);
end;
{ S O R T O W A N I E }
readln;
for i:=1 to 14 do
for j:=1 to 14 do
if tab[j] >tab[j+1] then
begin
tmp:=tab[j];
tab[j]:=tab[j+1];
tab[j+1]:=tmp;
end;
writeln ('wypisywanie po sortowaniu: ');
begin
for i:=1 to 15 do
writeln (tab[i]);
end;
readln;
end.
Do czasu sortowania wszystko wydaje się proste. Postaram się wyjaśnić procedurę sortowania po kolei:
weźmy np. przykład tablicy zlożonej z elementów:
2 5 3 8 4
i teraz pytanie.. jak to działa? popatrzmy..
Kod: Zaznacz cały
for i:=1 to 4 do
for j:=1 to 4 do {1 do 5 ponieważ nasza przykladowa tablica zawiera 5 elementów}
if tab[j] >tab[j+1] then
begin
tmp:=tab[j];
tab[j]:=tab[j+1];
tab[j+1]:=tmp;
end;
Na początku zmienna sterująca (j) ma wartość 1. Po każdym obrocie pętli wartość ta rośnie o 1, czyli oznacza to, że pętla for będzie się wykonywała 14 razy. Na przykladzie naszej tablicy: po pierwszym obrocie pętli element pierwszy tablicy (2) porówna się z elementem drugim (5). Element o wartości 2 nie jest większy więc nie nastąpi przestawienie wartości zmiennych. Konczy się pętla. Zmienna sterująca zmienia wartość na większą o 1 czyli uzyskuje wartość 2, teraz z kolei porównywany jest element drugi z trzecim czyli wartości 5 i 3. 5 jest większe niz 3 dlatego następuje zmiania zmiennych (wartość tablicy 2 zamienia się z wartością tablicy 3). po wykonaniu tej pętli 5 razy liczby mogą się przesunąć maxymalnie o jedną pozycję w prawo lub w lewo, czyli na przykladzie naszej tablicy będzie wyglądało to tak:
2 3 5 4 8
Widzimy, że elementy dalej nie są posortowane. Dlatego w programie została użyta jeszcze jedna petla for:
pętla ta pozwala na przejście pierwszego element tablicy na sam koniec np. jeśli nasza tablica ma elementy:
8 1 1 1 1 1 1 5
to pętla musi zostać wykonana 7 razy by element z początku przeniósł się na koniec.
Mam nadzieję, że w jakiś sposób pomogłem