sortowanie tablic

WITH Ada.Text_IO;

USE Ada.Text_IO;

WITH Ada.Integer_Text_IO;

USE Ada.Integer_Text_IO;

WITH Ada.Numerics.Float_Random;

USE Ada.Numerics.Float_Random;

PROCEDURE Sortowanie IS

SUBTYPE Typ_Klucza IS Integer RANGE 1..1000; -- Kluczem sa cyfry

TYPE Element IS

RECORD

Klucz : Typ_Klucza;

END RECORD;

TYPE Tablica IS ARRAY (Natural RANGE <>) OF Element;--definiujemy tablice

--<> wycina dowolny zakres ze zbioru

--losowanie elementow tablicy przez program

PROCEDURE Losowanie (

Tab : OUT Tablica) IS

Losuj : Generator;

BEGIN

FOR Indeks IN Tab'RANGE LOOP

Tab(Indeks).Klucz := Integer(Random(Losuj)*30.0);

END LOOP;

END Losowanie;

--zamiana elementow

PROCEDURE Wymien (

Tab : IN OUT Tablica;

Poprzedni,

Nastepny : IN Integer) IS

Temp : Element;

BEGIN

Temp:=Tab(Poprzedni);

Tab(Poprzedni):=Tab(Nastepny);

Tab(Nastepny):=Temp;

END Wymien;

--wczytywanie tablicy

PROCEDURE Wczytaj_Tablice (

Tab : OUT Tablica) IS

Znak : Integer;

BEGIN

FOR Indeks IN Tab'RANGE LOOP

LOOP

Put(Indeks);

Put(" liczba: ");

Get(Znak);

EXIT WHEN Znak IN Typ_Klucza;

New_Line;

Put("Ups. To nie jest cyfra z zakresu [1,1000] . Podaj jeszcze raz. ");

New_Line(3);

END LOOP;

Tab(Indeks).Klucz:=Znak;

END LOOP;

END Wczytaj_Tablice;

--wypisanie tablicy

PROCEDURE Wypisz_Tablice (

Tab : IN Tablica) IS

BEGIN

FOR Indeks IN Tab'RANGE LOOP

Put(Tab(Indeks).Klucz);

END LOOP;

END Wypisz_Tablice;

--sortowanie przez wybor w porzadku rosnacym

PROCEDURE Sortowanie_Wybor (

Tab : IN OUT Tablica) IS

Pkt_Najmniejszy : Integer;

Porownania : Natural;

Zamiany : Natural;

BEGIN

Porownania:=0;

Zamiany:=0;

FOR Indeks IN Tab'First..Tab'Last-1 LOOP

Pkt_Najmniejszy:=Indeks;

FOR Indeks2 IN Indeks+1..Tab'Last LOOP

IF Tab(Indeks2).Klucz<Tab(Pkt_Najmniejszy).Klucz THEN

Pkt_Najmniejszy:=Indeks2;

END IF;

Porownania:=Porownania+1;

END LOOP;

IF Pkt_Najmniejszy /= Indeks THEN

Zamiany:=Zamiany+1;

Wymien(Tab,Pkt_Najmniejszy,Indeks);

END IF;

END LOOP;

Put("Ilosc porownan: ");

Put(Porownania);

New_Line;

Put("Ilosc zamian: ");

Put(Zamiany);

New_Line;

END Sortowanie_Wybor;

--sortowanie przez wybor w porzadku malejacym

PROCEDURE Sortowanie_Wybor_Malejacy (

Tab : IN OUT Tablica) IS

Pkt_Najwiekszy : Integer;

Porownania : Natural;

Zamiany : Natural;

BEGIN

Porownania:=0;

Zamiany:=0;

FOR Indeks IN Tab'First..Tab'Last-1 LOOP

Pkt_Najwiekszy:=Indeks;

FOR Indeks2 IN Indeks+1..Tab'Last LOOP

IF Tab(Indeks2).Klucz>Tab(Pkt_Najwiekszy).Klucz THEN

Pkt_Najwiekszy:=Indeks2;

END IF;

Porownania:=Porownania+1;

END LOOP;

IF Pkt_Najwiekszy /= Indeks THEN

Zamiany:=Zamiany+1;

Wymien(Tab,Pkt_Najwiekszy,Indeks);

END IF;

END LOOP;

Put("Ilosc porownan: ");

Put(Porownania);

New_Line;

Put("Ilosc zamian: ");

Put(Zamiany);

New_Line;

END Sortowanie_Wybor_Malejacy;

--sortowanie przez wstawianie w porzadku rosnacym

PROCEDURE Sortowanie_Wstawianie (

Tab : IN OUT Tablica) IS

Porownania : Natural;

Zamiany : Natural;

BEGIN

Porownania:=0;

Zamiany:=0;

FOR Indeks IN Tab'First..Tab'Last-1 LOOP

FOR Indeks2 IN Indeks+1..Tab'Last LOOP

Porownania:=Porownania+1;

IF Tab(Indeks2).Klucz<Tab(Indeks).Klucz THEN

Wymien(Tab,Indeks2,Indeks);

Zamiany:=Zamiany+1;

END IF;

END LOOP;

END LOOP;

Put("Ilosc porownan: ");

Put(Porownania);

New_Line;

Put("Ilosc zamian: ");

Put(Zamiany);

END Sortowanie_Wstawianie;

--sortowanie przez wstawianie w porzadku malejacym

PROCEDURE Sortowanie_Wstawianie_Malejacy (

Tab : IN OUT Tablica) IS

Porownania : Natural;

Zamiany : Natural;

BEGIN

Porownania:=0;

Zamiany:=0;

FOR Indeks IN Tab'First..Tab'Last-1 LOOP

FOR Indeks2 IN Indeks+1..Tab'Last LOOP

Porownania:=Porownania+1;

IF Tab(Indeks2).Klucz>Tab(Indeks).Klucz THEN

Wymien(Tab,Indeks2,Indeks);

Zamiany:=Zamiany+1;

END IF;

END LOOP;

END LOOP;

Put("Ilosc porownan: ");

Put(Porownania);

New_Line;

Put("Ilosc zamian: ");

Put(Zamiany);

END Sortowanie_Wstawianie_Malejacy;

PROCEDURE Przypisz (

Tab1 : IN Tablica;

Tab2 : OUT Tablica) IS

BEGIN

FOR Indeks IN Tab1'RANGE LOOP

Tab2(Indeks) := Tab1(Indeks);

END LOOP;

END Przypisz;

--program glowny

Max_Ilosc : CONSTANT := 30;

Elementy : Positive; --ilosc elementow

Wybor : Integer;

BEGIN

Put("Program sortuje tablice metoda wybierania i wstawiania. ");

New_Line(4);

LOOP

Put("Podaj ilosc elementow tablicy: ");

Get(Elementy);

New_Line;

EXIT WHEN 1<Elementy AND Elementy<=Max_Ilosc;

Put("Ups. Maksymalna ilosc elementow moze wynosic 30.");

New_Line;

END LOOP;

DECLARE

Tab1 : Tablica (1 .. Elementy);

Tab2 : Tablica (1 .. Elementy);

BEGIN

LOOP

Put("Wybierz metode wprowadzania danych: ");

New_Line;

Put("1. Sam wpisze dane. ");

New_Line;

Put("2. Program losuje dane. ");

New_Line;

Put("Twoj wybor: ");

Get(Wybor);

New_Line(2);

EXIT WHEN (Wybor=1 OR Wybor=2);

Put("Ups. Wybierz 1 lub 2. ");

New_Line;

END LOOP;

IF Wybor=1 THEN

Put("Wprowadz ");

Put(Elementy ,1);

Put(" liczby calkowite: ");

New_Line;

Wczytaj_Tablice(Tab1);

ELSE

Losowanie(Tab1);

END IF;

Przypisz(Tab1,Tab2);

Put("Twoja tablica przed sortowaniem: ");

New_Line;

Wypisz_Tablice(Tab1);

New_Line(2);

Put("SPOSOB 1: SORTOWANIE PRZEZ WYBOR.");

New_Line(2);

Put(" => Sortowanie w porzadku rosnacym. ");

New_Line;

Sortowanie_Wybor(Tab1);

Put("Twoja tablica po posortowaniu: ");

New_Line;

Wypisz_Tablice(Tab1);

New_Line(2);

Put(" => Sortowanie w porzadku malejacym. ");

New_Line;

Sortowanie_Wybor_Malejacy(Tab1);

New_Line;

Put("Twoja tablica po posortowaniu: ");

New_Line;

Wypisz_Tablice(Tab1);

New_Line(3);

Put("SPOSOB 2: SORTOWANIE PRZEZ WSTAWIANIE. ");

New_Line(2);

Put(" => Sortowanie w porzadku rosnacym. ");

New_Line;

Sortowanie_Wstawianie(Tab2);

New_Line;

Put("Twoja tablica po posortowaniu: ");

New_Line;

Wypisz_Tablice(Tab2);

New_Line(2);

Put(" => Sortowanie w porzadku malejacym. ");

New_Line;

Sortowanie_WSTAWIANIE_Malejacy(Tab2);

New_Line;

Put("Twoja tablica po posortowaniu: ");

New_Line;

Wypisz_Tablice(Tab2);

END;

END Sortowanie;


Wyszukiwarka

Podobne podstrony:
4 sortowanie
tablice do analizy konkur
Sortowanie cz 2 ppt
TABLICE
Tablice Trwania ZyciaKonstruowanie
Algorytmy i struktury danych Wykład 3 i 4 Tablice, rekordy i zbiory
Tabliczka mnożenia
F1 15 Tablica kodu ASCII
ODCHYŁKI NORMALNE Tablice
JAVA tablice
1 mapka pogladowa okresl lokal tablic zal nr1
14 Tablica 12
10 Tablica7id 28160
abfc12d7930dd4d27f6248bd71353836, Przegrane 2012, Rok 2012, mail 10.07 Mława tablice
Zalacznik nr 1 do zapytanie cenowego tablice graficzne, Przegrane 2012, Rok 2012, mail 20.12 Milicz

więcej podobnych podstron