program projekt_aisd;
{Sortowanie przez wstawianie}
uses dos,crt;
var
h1, m1, s1, hund1 : word;
h2, m2, s2, hund2 : word;
tab:array[1..100] of char;
tab1:array[1..100] of char;
i:longint;
z:char;
x,y,u,menu,kz,kr,spr,liczby,oblicz:integer;
porownanie,zamiana,ile,zla_ilosc:integer;
procedure losowanie;
begin
textcolor(10);
randomize;
zla_ilosc:=0;
repeat
writeln;
if zla_ilosc>0 then
writeln('Podales zla ilosc!!!');
write('Podaj ile mam wylosowac znakow(max 100): ');
readln(ile);
zla_ilosc:=zla_ilosc+1;
until ile<=100;
for x:=1 to ile do
liczby:=random(256);
tab1[x]:=chr(liczby);
until (liczby>32) ;
end;
write('Wylosowane znaki to: ');
write(tab1[x],' ');
readln;
textcolor(7);
procedure zamianatablic;
tab[x]:=tab1[x];
procedure sortowanie_do_czas;
for x:=ile-1 downto 1 do
z:=tab[x];
y:=x+1;
while (y<=ile) and (z>tab[y]) do
tab[y-1]:=tab[y];
tab[y]:=z;
y:=y+1;
tab[y-1]:=z;
procedure czas;
gettime(h1, m1, s1, hund1);
for i:=1 to 1000000 do
sortowanie_do_czas;
gettime(h2, m2, s2, hund2);
gotoxy(1,6);
write('Czas sortowania :');
if hund2<hund1 then
gotoxy(28,6);
write(hund2+100-hund1,'ms');
s2:=s2-1;
end
else
write(hund2-hund1,'ms');
if s2<s1 then
gotoxy(25,6);
write(s2+60-s1,',');
m2:=m2-1;
write(s2-s1,',');
if m2<m1 then
gotoxy(22,6);
write(m2+60-m1,':');
h2:=h2-1;
write(m2-m1,':');
if h2<h1 then
gotoxy(19,6);
write(h2+24-h1,':');
write(h2-h1,':');
procedure kolor;
for u:=1 to ile do
if u=kr then
write(tab[u],' ');
if u=kz then
textcolor(5);
procedure sort_wstawianie;
porownanie:=0;
zamiana:=0;
kr:=x;
kz:=y;
porownanie:=porownanie+1;
kolor;
kr:=y;
kz:=y-1;
zamiana:=zamiana+1;
spr:=1;
kr:=y-1;
if spr=0 then
spr:=0;
writeln('Tak wygladaja posortowane znaki');
write(tab[x],' ');
procedure zlozonosc;
clrscr;
writeln('Program wykonal ',porownanie,' porownan');
writeln('Program wykonal ',zamiana,' zamian');
zamianatablic;
czas;
oblicz:=1;
for x:=2 to ile-1 do
oblicz:=oblicz+x;
writeln('Pesymistyczna zlozonosc obliczeniowa wynosi ',oblicz);
writeln(' 2');
writeln('Wyraza sie wzorem: 1/2n(n-1), co mozemy zapisac: O(n )');
writeln('Srednia zlozonosc obliczeniowa wynosi ',oblicz);
writeln('Zlozonosc obliczeniowa optymistyczna wynosi: ');
writeln('Wyraza sie wzorem: , co mozemy zapisac: O(n log n)');
writeln('########## MENU ##########');
writeln(' 1. Losowanie znakow');
writeln(' 2. Sortowanie');
writeln(' 3. Porownania,zamiany,czas i zlozonosc');
writeln(' 4. Koniec');
write ('Podaj numer pozycji: ');
readln(menu);
if menu=1 then
losowanie;
else;
if menu=2 then
sort_wstawianie;
if menu=3 then
zlozonosc;
until menu=4;
end.
iza-m_71