static double Umocni(double mocnenec, int mocnitel)
for (int i = 0; i < mocnitel; i++)
static bool TryGetNumber(out double number)
Console.WriteLine("Zadej číslo nebo 'X' pro ukončení programu.");
string vstup = Console.ReadLine();
if (vstup.ToUpper() == "X")
if (double.TryParse(vstup, out number))
Console.WriteLine("Lituji, zadali jste neplatný vstup. Zkuste to znovu, prosím.");
return TryGetNumber(out number);
static bool TryGetOperator(out string znamenko)
Console.WriteLine("Nyní zadej operátor +, -, *, / nebo ^, prosím. Pokud chceš program ukončit, zadej 'X'.");
znamenko = Console.ReadLine();
if (znamenko.ToUpper() == "X")
if (znamenko == "+" || znamenko == "-" || znamenko == "*" || znamenko == "/" || znamenko == "^")
Console.WriteLine("Zadali jste neplatný operátor. Zkuste to znovu.");
return TryGetOperator(out znamenko);
static double Vypocitej(double cislo1, double cislo2, string znamenko)
if (znamenko == "/" && cislo2 == 0)
Console.WriteLine("Dělení nulou není povoleno. Zadejte prosím jiné číslo.");
return Umocni(cislo1, (int)cislo2);
static void Main(string[] args)
Console.WriteLine("Ahoj! Vítej v aplikaci KalkuLenka V7.0!");
if (!TryGetNumber(out vysledek))
Console.WriteLine("Ukončuji program.");
double vstupniCislo1 = vysledek;
if (!TryGetOperator(out znamenko))
Console.WriteLine("Ukončuji program.");
while (!TryGetNumber(out vstupniCislo2) || (znamenko == "^" && vstupniCislo2 != (int)vstupniCislo2))
if (znamenko == "^" && vstupniCislo2 != (int)vstupniCislo2)
Console.WriteLine("Pro operátor '^' musí být druhé číslo celé číslo. Zadejte prosím celé číslo.");
else if (!TryGetNumber(out vstupniCislo2))
Console.WriteLine("Ukončuji program.");
vysledek = Vypocitej(vstupniCislo1, vstupniCislo2, znamenko);
Console.WriteLine($"Výsledek početní operace {vstupniCislo1} {znamenko} {vstupniCislo2} je {vysledek}.");