http://www.adaconcept.com/programs/maximum_kivalasztasos_rendezes.adb
--Rotter Gyorgy
--maximum kivalasztasos rendezes:
--"egy kis tipusdefinialassal"
--billentyuzetrol szam beolvasassal
--nehany fele parameter atadasal, attributummal
--beagyazassal
--(pici kivetelkezeles mutatassal, tovabbdobassal, konvertalassal)
with ada.text_io; --ennek a csomagnak a segitsegevel tudunk kirni a kepernyore
with ada.integer_text_io; --a szamok beolvasasahoz, kezelesehez hasznalt csomag
use ada.text_io; --| hogy ne kelljen annyit irni
use ada.integer_text_io; --| (de ennek ellenere mindig mondjuk magunkban a csomag nevet, ha hasznaljuk!)
procedure maximum_kivalasztasos_rendezes is --[A Foprogram] (parameter nelkuli eljaras!!!)
tombmeret: constant:=5; --forditasi idoben kiiertekelodo konstans!
type tombtipus is array(1..tombmeret) of integer; --tipusdefinialas (hogy tudjunk majd tombtipust atadni parameterkent)
tomb:tombtipus; --a rendezendo szamokat tartalmazo tomb (tombtipus-u) (tudom, nem kap kezdeti erteket! :) )
procedure tombkiir(t:tombtipus); --a -csak bemeno parameterkent kapott- t tomb elemeinek kiirasa
procedure szamokbekerese; --a felhasznalo altal beirt szamokkal feltoltjuk a tomb-ot (globalis valtozo hasznalat)
procedure tombotrendez(t: in out tombtipus); --...ezert kell a beszedes nev... :) (ki-be meno parameterrel)
-------------------------------[Eljarasok]-------------------------
procedure tombkiir(t:tombtipus) is
begin
put_line("A tomb elemei:");
--vegigmegyunk a t elemein, es kiirjuk azokat
for i in t'range loop
put(t(i));
end loop;
new_line;
end tombkiir;
procedure szamokbekerese is
be:integer;
begin
--a tomb feltoltese
for i in tomb'range loop
get(be); --szam bekerese billentyuzetrol ( Ada.Integer_Text_IO.get(be); )
tomb(i):=be;
end loop;
exception --kivetelkezeles
when others => put_line("Kerem szamot adjon meg!");
raise; --a fellepett kivetel "tovabbdobsa", a kulso blokkba
end szamokbekerese;
procedure tombotrendez(t: in out tombtipus) is
--"loklis eljaras" enkapszulacio....
procedure csere(A:in out integer; B:in out integer) is
c:integer; --lehetne kezdeti ertekadas, de direkt nincs! :)
begin
c:=a;
a:=b;
b:=c;
end csere;
begin
put_line("--rendezes indul");
--a rendezes...
for i in t'first..t'last-1 loop
for j in i+1..t'last loop
if t(i)<t(j) then csere(t(i),t(j)); end if;
end loop;
-- tombkiir(t); --direkt bennehagyott komment, ami a tesztelest is segiti!!!
end loop;
put_line("--rendezes vege");
end tombotrendez;
begin --innentol [A Foprogram] utasitasai
put_line("program indul");
put_line("Kerem adjon meg" & integer'image(tombmeret) & " szamot!"); --"integer" -bol string konvertalas
begin --declare blokk :) declare nelkul (hogy ilyen is legyen :))
szamokbekerese; --| az eljarasok hivasa
tombkiir(tomb); --|
tombotrendez(tomb); --|
tombkiir(tomb); --|
exception --kivetelkezeles
when others => put_line("Kivul is kivetel!");
end;
put_line("program vege");
end maximum_kivalasztasos_rendezes;