IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Mezi 13:00 až cca 16:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.

Kalkulačka

Konzolová kalkulačka, kterou se snažím co nejvíc vyladit, jsem začátečník a tak bych byl rád za nějaké tipy jak kód zjednodušit a nebo i jak kalkulačku jinak vylepšit. PS: Později jí předělám do OOP.

C# .NET

bool pokracovat = true;
            while (pokracovat) //Cykl díky, kterému může uživatel počítat další příklady
            {
                Console.Clear(); //Pokud uživatel chce počítat další příklad, konzole se vyčistí
                Console.Write("Napiš první číslo nebo základ mocniny nebo číslo které chcete odmocnit:");
                double a;
                while (!double.TryParse(Console.ReadLine(), out a)) //Vyžádá si hodnotu a, v případě neplatné hodnoty požádá znovu 
                    Console.WriteLine("Zadali jste nesprávné číslo, zkuste to znovu.");

                bool nula = true;
                while (nula) //Pokud nelze provést operaci s nulou bude uživatel navrácen k zvolení jiné hodnoty
                {
                    nula = false;
                    Console.Write("Napiš druhé číslo nebo exponent nebo n-tou odmocninu:");
                    double b;
                    while (!double.TryParse(Console.ReadLine(), out b)) //Vyžádá si hodnotu b, v případě neplatné hodnoty požádá znovu
                        Console.WriteLine("Zadali jste nesprávné číslo, zkuste to znovu."); 

                    bool voleni = true;
                    while (voleni) //Pokud uživatel špatně zvolí operaci, bude o volbu požádán znova
                    {
                        voleni = false;
                        Console.WriteLine("Vyber operaci");
                        Console.WriteLine("1 - sčítání");
                        Console.WriteLine("2 - odčítání");
                        Console.WriteLine("3 - násobení");
                        Console.WriteLine("4 - dělení");
                        Console.WriteLine("5 - umocnění");
                        Console.WriteLine("6 - odmocnění");
                        char volba = Console.ReadKey().KeyChar;
                        Console.WriteLine(); //Odřádkuje po znaku

                        double vysledek = 0;
                        bool platnaVolba = true;
                        switch (volba)
                        {
                            case '1':
                                vysledek = a + b; //sčítání
                                break;

                            case '2':
                                vysledek = a - b; //odčítání
                                break;

                            case '3':
                                vysledek = a * b; //násobení
                                break;

                            case '4':
                                if (b == 0)  //dělení
                                    nula = true; //V případě dělení 0 bude uživatel navrácen na začátek cyklu "nula"
                                else
                                    vysledek = a / b;
                                if (b == 0)
                                    Console.WriteLine("Nelze dělit 0, zvolte jiného dělitele.");
                                break;

                            case '5':
                                vysledek = a; //umocňování
                                if (b == 0)
                                    vysledek = 1; //V případě umocňování 0 bude výsledek 1
                                else
                                    for (int i = 0; i < (b - 1); i++)
                                        vysledek = vysledek * a;
                                break;

                            case '6':
                                if (b == 0) //odmocňování
                                    nula = true; //V případě odmocňění 0 odmocninou bude uživatel návrácen na začátek cyklu "nula"
                                else
                                    vysledek = Math.Pow(a, (1.0 / b));
                                if (b == 0)
                                    Console.WriteLine("Nelze odmocňovat 0 odmocninou, zvolte jinou odmocninu.");
                                break;

                            default:
                                voleni = true;
                                platnaVolba = false;
                                break;
                        }
                        if (platnaVolba && !nula)
                            Console.WriteLine("Výsledek= {0}", vysledek);
                        if (!platnaVolba)
                            Console.WriteLine("Neplatná volba zkuste to znovu.");
                    }
                    
                }
                Console.WriteLine("Chcete vypočítat další příklad? a/n");
                bool platnavolba = false;
                while (!platnavolba) //V případě špatné volby bude uživatel vyzván znova
                {
                    switch (Console.ReadKey().KeyChar.ToString().ToLower())
                    {
                        case "a":
                            pokracovat = true;
                            platnavolba = true;
                            break;
                        case "n":
                            pokracovat = false;
                            platnavolba = true;
                            break;
                        default:
                            Console.WriteLine();
                            Console.WriteLine("Neplatná volba, zadejte prosím a/n");
                            break;
                    }
                }
            }

Neformátovaný

Přidáno: 8.10.2018
Expirace: Neuvedeno

Avatar
Autor: Petr Seifert
Aktivity