Největší číslo
3. NejvetsiZe3Cisel
3.3. Výsledný kód
Následující zdrojový kód je kompletací předešlých kódů programu NejvetsiZe3Cisel, který je umístěn v souboru Program.cs - viz Kód 1.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NejvetsiZe3Cisel { class Program { static void Main(string[] args) { /* Deklarace: 'a' ... první zadané celé číslo; 'b' ... druhé zadané celé číslo * 'c' ... třetí zadané celé číslo */ int a, b, c; // Výzva k zadání prvního celého čísla Console.Write("Zadejte a: "); /* Načtení prvního celého čísla a test, zda proběhla konverze celého * čísla (návrat metody konverze je boolean) */ bool konverze = int.TryParse(Console.ReadLine(), out a); // Pokud neproběhla konverze if (konverze == false) { // Výpis chyby při konverzi Console.WriteLine("Chyba při konverzi na celé číslo"); // Čekání na stisk klávesy Console.ReadKey(); // Ukončení programu return; } // Výzva k zadání druhého celého čísla Console.Write("Zadejte b: "); // Test, zda neproběhla konverze celého čísla (návrat metody konverze je boolean) if (int.TryParse(Console.ReadLine(), out b) == false) { // Výpis chyby při konverzi Console.WriteLine("Chyba při konverzi na celé číslo"); // Čekání na stisk klávesy Console.ReadKey(); // Ukončení programu return; } // Výzva k zadání třetího celého čísla Console.Write("Zadejte c: "); // Test, zda neproběhla konverze celého čísla (návrat metody konverze je boolean) if (int.TryParse(Console.ReadLine(), out c) == false) { // Výpis chyby při konverzi Console.WriteLine("Chyba při konverzi na celé číslo"); // Čekání na stisk klávesy Console.ReadKey(); // Ukončení programu return; } // Výpis textu pro oddělení porovnání provedeného pomocí zavolání metody bez návratu 'VetsiRovnoVerze1' Console.WriteLine("Porovnání tří čísel pomocí metody 'VetsiRovnoVerze1':"); /* Volání metody 'VetsiRovnoVerze1' - výpis názvu proměnné obsahující maximum a hodnotu maxima * je proveden uvnitř metody - vnořené rozhodování */ VetsiRovnoVerze1(a, b, c); // Výpis textu pro oddělení porovnání provedeného pomocí zavolání metody 'VetsiRovnoVerze2' Console.WriteLine("Porovnání tří čísel pomocí metody 'VetsiRovnoVerze2':"); /* Volání metody 'VetsiRovnoVerze2' bez návratu - výpis názvu proměnné obsahující maximum a hodnotu * maxima je proveden uvnitř metody - princip kaskádování rozhodování */ VetsiRovnoVerze2(a, b, c); // Výpis textu pro oddělení porovnání provedeného pomocí zavolání metody 'VetsiRovnoVerze3' Console.WriteLine("Porovnání tří čísel pomocí metody 'VetsiRovnoVerze3':"); /* Volání metody 'VetsiRovnoVerze3' bez návratu (porovnání s maximem obdrženého z dvojitého * volání metody 'VetsiRovno') - výpis maxima a zadaných hodnot je proveden uvnitř metody */ VetsiRovnoVerze3(a, b, c); // Výpis textu pro oddělení porovnání provedeného pomocí zavolání metody 'VetsiRovnoVerze4' Console.WriteLine("Porovnání tří čísel pomocí metody 'VetsiRovnoVerze4':"); /* Volání metody 'VetsiRovnoVerze4' bez návratu (využití volání metody 'VetsiRovno') - výpis * maxima a zadaných hodnot je proveden uvnitř metody */ VetsiRovnoVerze4(a, b, c); // Výpis textu pro oddělení porovnání provedeného pomocí zavolání metody 'VetsiVerze5' Console.WriteLine("Porovnání tří čísel pomocí metody 'VetsiRovnoVerze5':"); /* Volání metody 'VetsiRovnoVerze5' bez návratu (využití dvojitého volání metody 'VetsiRovno') - * výpis maxima a zadaných hodnot je proveden uvnitř metody */ VetsiRovnoVerze5(a, b, c); // Čekání na stisk klávesy -> ukončení programu Console.ReadKey(); } /* Metoda bez návratu - výpis názvu parametru obsahující maximum a hodnota * maxima - vnořené rozhodování */ static void VetsiRovnoVerze1(int a, int b, int c) { // Porovnání prvního a druhé předaného čísla if (a > b) // Vnořené rozhodování if (a > c) // Výpis názvu maxima a hodnoty maxima Console.WriteLine("Největší je a = " + a); else if (a == c) Console.WriteLine("Největší je a = c = " + a); else Console.WriteLine("Největší je c = " + c); else if (a == b) if (a > c) Console.WriteLine("Největší je a = b = " + a); else if (a == c) Console.WriteLine("Největší je a = b = c = " + a); else Console.WriteLine("Největší je c = " + c); else if (b > c) Console.WriteLine("Největší je b = " + b); else if (b == c) Console.WriteLine("Největší je b = c = " + b); else Console.WriteLine("Největší je c = " + c); } /* Metoda bez návratu - výpis názvu parametru obsahující maximum a hodnoty maxima - * kaskádování (pomocí spojování podmínek) */ static void VetsiRovnoVerze2(int a, int b, int c) { // Spojení dvou podmínek pomocí 'a zároveň' if (a > b && a > c) // Výpis názvu maxima a hodnoty maxima Console.WriteLine("Největší je a = " + a); else if (a > b && a == c) Console.WriteLine("Největší je a = c = " + a); else if (a > b && a < c) Console.WriteLine("Největší je c = " + c); else if (a == b && a > c) Console.WriteLine("Největší je a = b = " + a); else if (a == b && a == c) Console.WriteLine("Největší je a = b = c = " + a); else if (a == b && a < c) Console.WriteLine("Největší je c = " + c); else if (a < b && b > c) Console.WriteLine("Největší je b = " + b); else if (a < b && b == c) Console.WriteLine("Největší je b = c = " + b); else if (a < b && b < c) Console.WriteLine("Největší je c = " + c); else Console.WriteLine("Někde je chyba!"); } /* Metoda s celočíselným návratem většího čísla ze dvou přijímaných čísel * Parametry: 'x' ... první předané celé číslo; 'y' ... druhé předané celé číslo */ static int VetsiRovno(int x, int y) { // Test, zda první předané číslo je větší, nebo rovno druhému if (x >= y) // První číslo je větší, nebo rovno druhému, výsledek metody je první nalezené číslo return x; else // Druhé číslo je větší než první, výsledek metody je druhé číslo return y; } // Metoda bez návratu - výpis názvu názvu parametru obsahující maximum a hodnoty maxima static void VetsiRovnoVerze3(int a, int b, int c) { /* Deklarace: 'max' ... hodnota největšího předaného čísla (maxima); * 's' ... text výsledného výpisu */ int max; string s = "Největší je "; // Získání hodnoty maxima max = VetsiRovno(VetsiRovno(a, b), c); // Test rovnosti prvního předaného čísla s maximem if (a == max) // První číslo je maximem s += ("a = "); // Test rovnosti druhého předaného čísla s maximem if (b == max) // Druhé číslo je maximem s += ("b = "); // Test rovnosti třetího předaného čísla s maximem if (c == max) // Třetí číslo je maximem s += ("c = "); // Výpis názvu maxima a hodnoty maxima Console.WriteLine(s + max); } // Metoda bez návratu s výpisem maxima a zadaných hodnot - využití metody 'VetsiRovno' static void VetsiRovnoVerze4(int a, int b, int c) { /* Volání metody 'VetsiRovno' - návrat metody obsahuje vyšší (nebo stejné) číslo z prvních * dvou předaných čísel -> návrat metody (větší číslo) je porovnán se 3. předaným číslem */ if (VetsiRovno(a, b) >= c) // Výpis největší hodnoty Console.WriteLine("Největší je {0} z čisel {1}, {2}, {3}", VetsiRovno(a, b), a, b, c); // Největší je 3. předané číslo else // Výpis největší hodnoty, tj. 3. předaného čísla Console.WriteLine("Největší je {0} z čísel {1}, {2}, {3}", c, a, b, c); } // Metoda bez návratu s výpisem maxima a zadaných hodnot - dvojité volání metody 'VetsiRovno' static void VetsiRovnoVerze5(int a, int b, int c) { /* Výpis největší hodnoty - využití dvojitého volání metody 'VetsiRovno' - první návrat metody * obsahuje vyšší číslo z prvních dvou předaných čísel -> porovnání návratu metody se třetím * předaným číslem -> získání maxima */ Console.WriteLine("Největší je {0} z čísel {1}, {2}, {3}", VetsiRovno(VetsiRovno(a, b), c), a, b, c); } } }
Kód 1: Program NejvetsiZe3Cisel - deklarace hlavní statické metody Main včetně deklarací dalších metod
Výstup programu
Na následujícím výstupu programu vidíme výpis největší hodnoty ze tří porovnaných hodnot - viz Výstup programu 1 - Kód 1. Jednotlivá porovnání jsou rozdělena do různých sekcí, abychom věděli, pomocí které metody s návratem byla získána největší hodnota a v prvních třech volaných metodách je také uveden název parametru, ve kterém je uloženo maximum. Po provedení výpisu konzolová aplikace čeká na stisk klávesy, aby po stisku klávesy byla následně ukončena. Na prvním výstupu v konzole vidíme, že největší číslo je třetí zadané číslo.

Výstup programu 1 - Kód 1: Ukázka výpisu největší hodnoty v hlavní statické metodě programu NejvetsiZe3Cisel
Pokud byla zadána např. dvě stejná čísla, je pomocí prvních tří metod vypsána rovnost obou čísel (u čtvrté a páté je vypsán pouze seznam zadaných čísel) - viz Výstup programu 2 - Kód 1.

Výstup programu 2 - Kód 1: Ukázka výpisu dvou stejných hodnot v hlavní statické metodě programu NejvetsiZe3Cisel
Pokud uživatel zadal špatný číselný vstup (např. text "bflm") návrat metody TryParse nabývá hodnoty false a je spuštěn příkaz výpisu chybové hlášky. Abychom si mohli přečíst chybovou hlášku, je za příkaz výpisu v kódu umístěn příkaz pro načtení znaku. Po stisku klávesy následuje ukončení programu pomocí příkazu return - viz Výstup programu 3 - Kód 1.

Výstup programu 3 - Kód 1: Ukázka výpisu chyby při konverzi v hlavní statické metodě programu NejvetsiZe3Cisel