[Pascal] Sortowanie bąbelkowe oraz przez wybór.
: 19 lut 2013, 18:19
Witam serdecznie, mam problem z programem. Miałem napisać program z instrukcją case, z wyborem sortowania bąbelkowego lub przez wybór. Po przejściu do sortowania bąbelkowego miało ukazać się kolejne menu: 1. Sortowanie rosnąco oraz 2. Sortowanie malejąco. Po napisaniu owego programu napotkałem problem, program nie chciał się uruchomić do sortowania malejącego, natomiast do rosnącego działa normalnie. Zamieszczam tutaj kod programu, może Wy coś poradzicie, bo ja już nie mam pomysłów.
Kod: Zaznacz cały
program sortowanie;
uses crt;
const n=30;
var tab:array[1..n] of integer;
a,b,c,min,i,j,k: integer;
znak,d: byte;
begin
clrscr;
writeln('Wybierz rodzaj sortowania: ');
writeln('1. Sortowanie babelkowe.');
writeln('2. Sortowanie przez wybor.');
read(znak);
case znak of
1: begin
clrscr;
writeln('3. Sortowanie rosnaco.');
writeln('4. Sortowanie malejaco.');
read(d);
case d of
3: begin
clrscr;
writeln('Sortowanie babelkowe rosnaco.');
writeln('Liczby przed sortowaniem: ');
randomize;
for a:=1 to n do
tab[a]:=random(100);
for a:=1 to n do write(tab[a],' ');
for b:=1 to n-1 do
for a:=1 to n-1 do
if tab[a]>tab[a+1] then
begin
c:=tab[a];
tab[a]:=tab[a+1];
tab[a+1]:=c;
end;
writeln;
writeln('Liczby po sortowaniu: ');
for a:=1 to n do write(tab[a],' ');
repeat until keypressed;
end;
end;
end;
{4: begin
clrscr;
writeln('Sortowanie babelkowe malejaco.');
writeln('Liczby przed sortowaniem: ');
randomize;
for a:=1 to n do
tab[a]:=random(100);
for a:=1 to n do write(tab[a],' ');
for b:=1 to n-1 do
for a:=1 to n-1 do
if tab[a]<tab[a+1] then
begin
c:=tab[a];
tab[a]:=tab[a+1];
tab[a+1]:=c;
end;
writeln;
writeln('Liczby po sortowaniu: ');
for a:=1 to n do write(tab[a],' ');
repeat until keypressed;
end;} {program wylacza sie po wybraniu opcji 4}
2: begin
clrscr;
writeln('3. Sortowanie rosnaco.');
writeln('4. Sortowanie malejaco.');
read(d);
case d of
3: begin
clrscr;
writeln('Sortowanie przez wybor rosnaco.');
for i:=1 to n do tab[i]:=random(100);
write('Liczby przed sortowaniem: ');
writeln;
randomize;
for i:=1 to n do write(tab[i],' ');
for j:=1 to n-1 do
begin
min:=j;
for i:=j+1 to n do
if tab[i]<tab[min] then min:=i;
k:=tab[min];
tab[min]:=tab[j];
tab[j]:=k;
end;
end;
end;
writeln;
writeln('Liczby po sortowaniu: ');
for i:=1 to n do write(tab[i],' ');
repeat until keypressed;
end;
{4:begin
clrscr;
writeln('Sortowanie przez wybor rosnaco.');
for i:=1 to n do tab[i]:=random(100);
write('Liczby przed sortowaniem: ');
writeln;
randomize;
for i:=1 to n do write(tab[i],' ');
for j:=1 to n-1 do
begin
min:=j;
for i:=j+1 to n do
if tab[i]>tab[min] then min:=i;
k:=tab[min];
tab[min]:=tab[j];
tab[j]:=k;
end;
end;
writeln;
writeln('Liczby po sortowaniu: ');
for i:=1 to n do write(tab[i],' ');
repeat until keypressed;}
end;
end.