3. C#

3.2. Rozměr pole

Další metodou umístěnou v regionu Nastavení atributů pole, která navrací uživatelem definovanou velikost pole je metoda RozmerPole - viz Kód 1. Tato metoda může být volána v metodě Inicializace. Metoda přijímá stávající počet prvků v ose, který je uložen do formálního parametru velikost. Dalším formálním parametrem je konstanta Max. Třetím parametrem je text, který určuje, zda uživatel nastavuje počet řádků, nebo počet sloupců matice. V aplikaci Flowgorithm nelze deklarovat konstantu, proto jsme v hlavní metodě pojmenovali konstantu velkým písmenem, abychom ji rozeznali od jiné proměnné, nebo parametru. V metodě jsou deklarována proměnná s názvem novaHodnota, která představuje uživatelem zadanou hodnotu představující novou velikost matice v ose.

Po vypsání stávajícího počtu prvků matice ve vybrané ose (záleží, zda jsme předali z metody Inicializace skutečný parametr pocetRadku, představující počet řádků - vertikální osa, nebo parametr pocetSloupcu reprezentující počet sloupců - horizontální osa) - viz Obrázek 1. 

Velikost dvourozměrného pole ve vybraných osách

Obrázek 1: Velikost dvourozměrného pole ve vybraných osách

Aby uživatel rozeznal který rozměr matice právě nastavuje, je do třetího parametru z hlavní metody předán text ve formě: "řádků", nebo "sloupců". Tento text je vypsán ve výzvě k určení velikosti pole v ose. 

Před načtením nové hodnoty určující počet prvků v ose matice do proměnné novaHodnota je ve výpisu uvedena dolní (1) a horní mez (Max) povoleného celočíselného intervalu, ve kterém se nová hodnota velikosti matice musí pohybovat. Pokud načtená hodnota neodpovídá intervalu, je do proměnné novaHodnota uložena maximální přípustná velikost matice v ose uložená v konstantě Max. Pokud nová hodnota neodpovídá stávající hodnotě velikosti v ose matice uložené v proměnné velikost, je do proměnné velikost přiřazena nově načtená hodnota. Tato proměnná velikost je následně přiřazena návratu metody - viz Kód 1. 

/// <summary>
/// Metoda s celočíselným návratem - navrací velikost pole v ose
/// </summary>
/// <param name="velikost"> aktuální velikost matice v ose </param>
/// <param name="max"> maximální velikost matice v ose </param>
/// <returns> Velikost matice v ose </returns>
static int RozmerPole(int velikost, int max, string text)
{
    // Deklarace: 'novaHodnota' ... nová velikost matice v ose 
    int novaHodnota;
 
    // Vypsání stávající velikosti matice v ose
    Console.WriteLine("Stávající počet " + text + " matice {0}:", velikost);
 
    // Výzva k zadání velikosti matice v ose 
    Console.Write("Zadejte počet " + text + " matice (1 - {0}): ", max);
 
    // Načtení velikosti matice
    int.TryParse(Console.ReadLine(), out novaHodnota);
 
    // Pokud nová hodnota je větší než maximum, nebo menší než 1 ...
    if ((novaHodnota > max) || (novaHodnota < 1))
    {
        /* Přiřazení maximální velikosti matice do lokální proměnné určující 
            * velikost matice v ose */
        novaHodnota = max;
        // Vypsání nové velikosti matice v ose
        Console.WriteLine("Redukce počtu " + text + " matice: {0}", novaHodnota);
    }
 
    // Pokud nová velikost matice není stejná jako stávající velikost v ose ...
    if (novaHodnota != velikost)
    {
        // Uložení nové velikosti matice do proměnné
        velikost = novaHodnota;
    }
 
    // Návrat metody
    return velikost;
}

Kód 1: Deklarace statické metody s celočíselným návratem s názvem RozmerPole