3. C#

3.7. Průměr pole

Další aritmetickou operací prováděnou nad prvky dvourozměrného pole, je výpočet aritmetického průměru ze všech prvků pole. Na následujícím obrázku vidíme, že se jedná o součet hodnot všech prvků pole podělený celkovým počtem prvků v poli, tj. m x n - viz Obrázek 1. 

Průměr prvků dvourozměrného pole

Obrázek 1: Průměr prvků dvourozměrného pole

Metoda PrumerPole, která je deklarována v regionu Operace s polem, navrací reálné číslo reprezentující vypočtený průměr. Metoda pro výpočet potřebuje tři parametry ve formě počtu řádků a sloupců matice a také samotnou matici obsahující jednotlivé prvky. Ve funkci jsou deklarovány následující lokální proměnné:

  • prumer - průměrná reálná hodnota ze všech prvků vektoru
  • suma - suma hodnot všech prvků vektoru
  • i - index řádku matice (deklarace přímo v cyklu)
  • j - index sloupce matice (deklarace přímo v cyklu)

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ů. Pro průchod všemi prvky matice jsou použity dva cykly s krokem - první pro procházení řádků a druhý pro sloupce. 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, který je vyjádřen součinem počtu řádků a sloupců matice (jinak bychom prováděli celočíselné dělení). Výsledek této operace je přiřazen výstupu metody - viz Kód 1.

/// <summary>
/// Návrat aritmetického průměru prvků matice
/// </summary>
/// <param name="m"> počet řádků matice </param>
/// <param name="n"> počet sloupců matice </param>
/// <param name="pole"> matice </param>
/// <returns> Průměr matice </returns>
static double PrumerPole(int m, int n, int[,] pole)
{
    /* Deklarace: 'prumer' ... průměrná reálná hodnota ze všech prvků matice; 
     * 'suma' ... suma hodnot všech prvků matice; i' ... index řádku matice; 
     * 'j' ... index sloupce matice */
    double prumer;
    int suma;
 
    // Inicializace - suma prvků je 0
    suma = 0;
 
    // Pro všechny řádky matice
    for (int i = 0; i < m; i++)
    {
        // Pro všechny sloupce matice
        for (int j = 0; j < n; j++)
        {
            // Přičtení dalšího prvku vektoru do sumy
            suma += pole[i, j];
        }
    }
 
    // Výpočet reálného průměru včetně přetypování
    prumer = (double)suma / (m * n);
 
    // Přiřazení vypočteného průměru návratu metody
    return prumer;
}

Kód 1: Deklarace statické metody s reálným návratem s názvem PrumerPole