Jednorozměrné pole - konzole
3. C#
V hlavní metodě programu JednorozmernePole jsou nejprve deklarovány potřebné proměnné pro určení vlastností jednorozměrného pole - vektoru:
- pocetPrvku - rozměr vektoru (počet prvků ve vektoru)
- Max - konstanta maximální velikosti vektoru
- minHodnota - přípustná minimální hodnota (dolní mez) prvků vektoru
- maxHodnota - přípustná maximální hodnota (horní mez) prvků vektoru
Po inicializaci všech proměnných je volána metoda RozmerPole s celočíselným návratem, aby uživatel mohl změnit velikost vektoru, tj. počet prvků, které chce do vektoru umístit. Tato metoda přijímá dva parametry - počet prvků vektoru a maximální přípustnou velikost vektoru.
Jelikož jsou potřebné atributy pole již naplněny, lze deklarovat vlastní celočíselný vektor. U deklarace je zapotřebí nejprve specifikovat datový typ všech prvků umísťovaných do vektoru. Za hranatými závorkami, které definují, že se jedná o pole, je definován název jednorozměrného pole. Vzhledem k tomu, že proměnná představuje objekt (instance třídy), je zapotřebí zavolat konstruktor (použití klíčového slova new), uvést datový typ pole (prvků pole) a ve hranaté závorce definovat velikost vytvářeného vektoru.
Uživateli umožníme změnu dolní meze, které mohou nabývat prvky vektoru, pomocí volání metody s celočíselný návratem DolniMez. Dolní mez je uložena do proměnné minHodnota. Dále lze nastavit i horní mez prvků vektoru, pomocí metody HorniMez, jejíž návrat je uložen do proměnné maxHodnota.
Pro naplnění prvků vektoru je použita metoda bez návratu PlnitPole. Prvky mohou být plněny třemi způsoby - náhodně, jednotlivě, nebo vektor bude obsahovat pouze nuly. Pro všechny typy plnění je zapotřebí definovat počet prvků, které mají být naplněny. První dva typy plnění ještě potřebují informace o dolní a horní mezi, aby byly prvky ve vektoru validní. Pole je předáno do metod hodnotou. Je však důležité upozornit, že pole je referenční typ, tzn. že jakákoliv změna provedená na vektoru se odrazí i vně volané metody (bez nutnosti použití předání pole do metody jako parametru předaného odkazem, tj. pomocí klíčového slova ref).
Po naplnění vektoru je uživateli vypsán vektor ve formě prvků umístěných v řádku (pomocí volání metody PoleJakoText) a zároveň prvků umístěných jednotlivě pod sebou (pomocí volání metody ZobrazitPole). Po výpisu prvků naplněného pole je pomocí metody MinimumVPoli, navrácena a vypsána hodnota minima vektoru včetně indexu prvku, kde minimum bylo nalezeno. Pro celočíselný návrat pořadí hledaného prvku ve vektoru je využita metoda IndexPrvku. Metoda přijímá dva parametry - první parametr představuje hledaný prvek (tento prvek je navrácená hodnota minima pomocí metody MinimumVPoli) a další parametr představuje pole, ve kterém bude prvek hledán. Stejný přístup je uplatněn i při hledání maxima vektoru.
Výpočet aritmetického průměru z prvků vektoru je realizován pomocí metody s reálným návratem PrumerPole. Toto desetinné číslo reprezentující průměr, je uživateli vypsáno v následující řádce pod výpisem maxima.
Poslední operací prováděnou s vektorem je jeho vzestupné řazení podle hodnot v prvcích. Pro řazení vektoru je volána metoda bez návratu s názvem SeraditPole. Po seřazení prvků vektoru je seřazený vektor vypsán jak do řádku, tak i do sloupce - viz Kód 1.
static void Main(string[] args) { /* Deklarace: 'pocetPrvku' ... rozměr vektoru (počet prvků ve vektoru); 'Max' ... konstantní hodnota * maximální velikosti vektoru; 'minHodnota' ... přípustná minimální hodnota (dolní mez) prvků vektoru; * 'maxHodnota' ... přípustná maximální hodnota (horní mez) prvků vektoru */ // Maximální rozměr vektoru const int Max = 10; // Dolní mez, které může nabýt prvek vektoru int minHodnota = 1; // Horní mez, které může nabýt prvek vektoru int maxHodnota = 100; // Rozměr vektoru je roven maximální možné délce int pocetPrvku = Max; // Zavolání metody s celočíselným návratem pro změnu velikosti vektoru pocetPrvku = RozmerPole(pocetPrvku, Max); // Deklarace vektoru se zadaným rozměrem (počtem prvků) int[] pole = new int[pocetPrvku]; // Zavolání metody s celočíselný návratem pro změnu dolní meze, které mohou nabývat prvky vektoru minHodnota = DolniMez(minHodnota, maxHodnota); // Zavolání metody s celočíselným návratem pro změnu horní meze, které mohou nabývat prvky vektoru maxHodnota = HorniMez(minHodnota, maxHodnota); /* Zavolání metody pro plnění vektoru (náhodnými čísly, jednotlivě zadanými hodnotami, * plnění vektoru nulami) */ PlnitPole(pocetPrvku, minHodnota, maxHodnota, pole); // Výpis prvků vektoru v řádku, kde jednotlivé prvky jsou odděleny čárkami Console.WriteLine("Výpis pole (do řádku): " + PoleJakoText(pocetPrvku, pole)); // Výpis prvků vektoru do sloupce, kde každý prvek je na nové řádce Console.WriteLine("Výpis pole (do sloupce): "); Console.Write(ZobrazitPole(pocetPrvku, pole)); // Výpis hodnoty minima vektoru, včetně jeho indexu Console.WriteLine("Minimum v poli: " + MinimumVPoli(pocetPrvku, pole) + " (index prvku: " + IndexPrvku(MinimumVPoli(pocetPrvku, pole), pole) + ")"); // Výpis hodnoty maxima vektoru, včetně jeho indexu Console.WriteLine("Maximum v poli: " + MaximumVPoli(pocetPrvku, pole) + " (index prvku: " + IndexPrvku(MaximumVPoli(pocetPrvku, pole), pole) + ")"); // Výpis průměru všech prvků vektoru Console.WriteLine("Průměr prvků pole: " + PrumerPole(pocetPrvku, pole)); // Vzestupné řazení prvků podle metody Bubble Sort SeraditPole(pocetPrvku, pole); // Výpis seřazeného vektoru do řádku Console.WriteLine("Seřazené pole (výpis do řádku): " + PoleJakoText(pocetPrvku, pole)); // Výpis seřazeného vektoru do sloupce Console.WriteLine("Seřazené pole (výpis do sloupce): "); Console.Write(ZobrazitPole(pocetPrvku, pole)); // Čekání na stisk klávesy -> ukončení programu Console.ReadKey(); }
Kód 1: Program JednorozmernePole - deklarace hlavní statické metody Main
V následujících podkapitolách budou popsány jednotlivé volané metody.