Dvourozměrné pole - konzole
3. C#
3.5. Zobrazení pole
V předchozí metodě PlnitJednotlive jsme volali různé metody pro plnění dvourozměrného pole - matice. Pro zobrazení naplněné matice budeme deklarovat metodu s textovým návratem s názvem PoleJakoText, kterou umístíme do regionu Zobrazení pole - viz Kód 1. Tuto metodu budeme využívat pro výpis prvků matice, kde jednotlivé prvky jsou od sebe odděleny čárkami (kvůli lepší čitelnosti). Metoda přijímá tři parametry, kde první celočíselný parametr představuje aktuální počet řádků matice, druhý parametr představuje počet sloupců matice a poslední třetí parametr je matice, kterou budeme vypisovat. Metoda využívá následující lokální proměnné:
- i - index řádku matice v němž je uložen prvek, který má být vypsán (deklarován přímo v cyklu)
- j - index sloupce matice v němž je uložen prvek, který má být vypsán (deklarován přímo v cyklu)
- vystup - výstupní textový řetězec obsahující prvky řádku oddělené čárkou
Po nezbytné deklaraci proměnných je provedena inicializace výstupního textového řetězce vystup prázdným textem.
Pro procházení jednotlivých prvků uvnitř matice jsou použit dva cykly s krokem. Vnější cyklus s rozhodovací proměnnou i (proměnná je deklarována přímo v cyklu) zajistí procházení všech řádků matice. Druhý vnitřní (vnořený) cyklus zajistí procházení všech sloupců matice. V těle vnitřního cyklu budeme do výsledného textového řetězce připojovat (pomocí operátoru +=) hodnotu jednotlivých prvků na pozici, která je určena pomocí indexu řádku a sloupce v hranaté závorce. Konverzi celočíselné hodnoty prvku provedeme pomocí metody Format datového typu (třídy) string a využijeme u převáděného hodnoty formátovou specifikaci D3, tj. tři číslice. Do výsledného textového řetězce za každý prvek umístíme čárku. Pro provedení zápisu všech prvků v řádku do proměnné vystup připojíme nový řádek pomocí vlastnosti NewLine třídy Environment (jedná se o systémovou třídu System.Environment). Další možností jak vložit řádek je např. vložení řídícího znaku \n , nebo pomocí stejného znaku v Unicode \u000A.
/// <summary> /// Prvky v sloupcích matice jsou převedeny na text a odděleny čárkou, kde každá řádka /// matice je umístěna na novém řádku ve výstupním textovém řetězci /// </summary> /// <param name="m"> počet řádků matice </param> /// <param name="n"> počet sloupců matice </param> /// <param name="pole"> matice </param> /// <returns> výstupní textový řetezec s prvky matice </returns> static string PoleJakoText(int m, int n, int[,] pole) { /* Lokální proměnná: 'vystup' - výsledek převodu na text - inicializace * a vložení nového řádku */ string vystup = ""; // Procházení řádků matice for (int i = 0; i < m; i++) { // Procházení sloupců matice for (int j = 0; j < n; j++) { // Převod hodnoty prvku na text včetně připojení čárky vystup += string.Format("{0:D3}, ", pole[i, j]); } // Přidání odstavce na konci každého řádku (také možnost vložení "\n") vystup += Environment.NewLine; } // Návrat výsledného textového řetězce return vystup; }
Kód 1: Deklarace statické metody s textovým návratem s názvem PoleJakoText
Další deklarovanou metodou v regionu Zobrazení pole je metoda bez návratu s názvem ZobrazitPole - viz Kód 2. V metodě v příkazu výpisu využijeme volání předchozí deklarované metody PoleJakoText, která navrátí textový řetězec se všemi prvky matice.
/// <summary> /// Volání metody pro výpis prvků matice do textového řetězce /// </summary> /// <param name="m"> počet řádků matice </param> /// <param name="n"> počet sloupců matice </param> /// <param name="pole"> vypisovaná matice </param> static void ZobrazitPole(int m, int n, int[,] pole) { // Zavolání metody pro výpis matice do textového řetězce Console.Write(PoleJakoText(m, n, pole)); }
Kód 2: Deklarace statické metody bez návratu s názvem ZobrazitPole