Dvourozměrné pole - WPF
4. C#
4.6. Průměr pole
Pro výpočet aritmetického průměru ze všech prvků v matici je použita soukromá metoda PrumerPole, která je deklarována v regionu Operace s polem, která je součástí regionu Pomocné metody. Tato metoda navrací reálné číslo reprezentující vypočtený průměr. Počátečním krokem metody je inicializace lokální celočíselné proměnné suma, která nám slouží pro uložení součtu všech dosud procházených prvků. Po ukončení průchodu všemi prvky matice je tato suma přetypována na reálné číslo (na typ double), abychom mohli provést podíl sumy a počtu prvků matice (pokud by byla suma celé číslo, bylo by provedeno celočíselné dělení). Počet prvků matice je roven součinu hodnoty počtu řádků a počtu sloupců uložených ve formálních parametrech m a n. Výsledek podílu sumy a počtu prvků je desetinné číslo, které je přiřazeno výstupu metody - viz Kód 1.
/// <summary> /// Metoda pro výpočet aritmetického průměru prvků v matici /// </summary> /// <param name="m"> počet řádků matice </param> /// <param name="n"> počet sloupců matice </param> /// <param name="pole"> matice </param> /// <returns> hodnota aritmetického průměru (reálné číslo) </returns> private double PrumerPole(int m, int n, int[,] pole) { /* Lokální proměnné: 'i' ... index řádku matice; 'j'... index sloupce matice; * 'suma' - suma prvků matice */ int suma; // Nastavení počáteční hodnoty u sumy suma = 0; // Procházení řádků matice for (int i = 0; i < m; i++) { // Procházení sloupců matice for (int j = 0; j < n; j++) { // Přičtení dalšího prvku matice do sumy suma += pole[i, j]; } } /* Výpočet průměru (suma/počet prvků) a přiřazení hodnoty do výstupu metody * nutné přetypovat sumu na double, aby nedošlo k celočíselnému dělení */ return (double)suma / (m * n); }
Kód 1: Deklarace metody pro výpočet aritmetického průměru prvků matice (PrumerPole)
Přemístíme se zpět do regionu Události a jeho části Operace s polem. V tomto regionu upravíme metodu obsluhy události stisknutí tlačítka BtnPrumer - viz Kód 2. V rámci těla metody budeme deklarovat reálnou lokální proměnnou prumer, do které uložíme návrat volané metody PrumerPole, které předáme tři parametry. První předaný parametr hodnotou je počet řádků matice, druhý je počet sloupců matice (uložené v datové složce třídy). Jako třetí parametr předáme matici. Navrácený průměr zobrazíme v na formuláři v objektu typu TextBox spolu s textem. Pro konverzi reálného čísla na textový řetězec využijeme metody Format třídy string, kde použijeme indexaci prvků ve složených závorkách včetně uvedení formátu výpisu reálného čísla na dvě desetinná místa (N2).
/// <summary> /// Volání metody pro výpočet aritmetického průměru z prvků matice /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnPrumer_Click(object sender, RoutedEventArgs e) { // Lokální proměnná: 'prumer' - průměr prvků v matici double prumer; // Přiřazení výstupu metody pro výpočet průměru z prvků pole do lokální proměnné prumer = this.PrumerPole(this.pocetRadku, this.pocetSloupcu, this.pole); /* Zobrazení textu 'Průměr = ' spolu s vypočteným průměrem (konverze reálného čísla * na text, zobrazného na 2 desetinná místa) do objektu (TextBox) na formuláři */ this.TxtVysledek.Text = string.Format("Průměr = {0:N2}", prumer); }
Kód 2: Deklarace metody pro zavolání metody pro výpočet aritmetického průměru prvků matice - výpis na formuláři (BtnPrumer_Click)