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