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;