Diskuze: Kalkulačka
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, takové ty konzolove aplikace jsem dlouho nedělal, takže mojí odpověď ber s rezervou dle mého nazoru nemáš mít Console.ReadKey() za položením té otázky. Tato funkce ti takhle zahodí první písmeno. Schválně si zkus něči takového.
string opakovat = Console.ReadLine();
switch (opakovat)
{
case "ano":
pokracovat = true;
break;
case "ne":
Environment.Exit(0);
break;
default:
Console.WriteLine(opakovat);
}
Tím uvidíš, co se v té proměnné nachází.
Momentálně ti to neskáče ani do jednoho casu.
Teď mi to nefunguje vůbec. Prý byl očekáván znak }. Netuším kde, protože všude kde by měl být, tak tam je.
namespace WhatAnApp
{
class Program
{
static void Main(string[] args)
{
bool kalkulacka = false;
bool mocninator = false;
bool pokracovat = true;
while (pokracovat == true)
{
Console.WriteLine("Vítejte v mé aplikaci, pro začátek si vyber, jestli chceš spustit kalkulačku nebo mocninátor.");
Console.WriteLine("1 - mocninátor");
Console.WriteLine("2 - kalkulačka");
int volba1 = int.Parse(Console.ReadLine());
switch (volba1)
{
case 1:
mocninator = true;
break;
case 2:
kalkulacka = true;
break;
default:
Console.WriteLine("Zadal jste špatnout hodnotu!");
break;
}
while (mocninator)
{
Console.WriteLine("Vybrál sis mocninátor");
Console.WriteLine("Zadejte číslo, které chcete umocnit");
float s = float.Parse(Console.ReadLine());
double d = s;
double m = 2;
Console.WriteLine("Výsledek je: " + Math.Pow(s, m));
}
else
kalkulacka = true;
Console.WriteLine("Přeješ si aplikaci spustit znovu? ano/ne");
switch (Console.ReadLine())
{
case "ano":
pokracovat = true;
break;
case "ne":
Environment.Exit(0);
break;
default:
Console.WriteLine("Zadal jste špatnou hodnotu");
break;
}
while (kalkulacka == true)
{
Console.WriteLine("Pro začátek musíš zadat dvě čísla, se kterými budeš pracovat");
Console.WriteLine("Zadej první číslo: ");
float a;
while (!float.TryParse(Console.ReadLine(), out a))
Console.WriteLine("Zadal jste neplatné číslo");
Console.WriteLine("Zadej druhé číslo: ");
float b;
while (!float.TryParse(Console.ReadLine(), out b))
Console.WriteLine("Zadal jste neplatné číslo");
Console.WriteLine("Výborně, teď si vyber operaci: ");
Console.WriteLine("1 - sčítání");
Console.WriteLine("2 - odčítání");
Console.WriteLine("3 - násobení");
Console.WriteLine("4 - dělení");
char volba = Console.ReadKey().KeyChar;
Console.ReadKey();
Console.WriteLine("Zvolil jste volbu číslo: " + volba);
float vysledek = 0;
bool platnaVolba = true;
switch (volba)
{
case '1':
vysledek = a + b;
break;
case '2':
vysledek = a - b;
break;
case '3':
vysledek = a * b;
break;
case '4':
vysledek = a / b;
break;
default:
platnaVolba = false;
break;
}
if (platnaVolba)
Console.WriteLine("Výsledek: {0}", vysledek);
else
Console.WriteLine("Neplatná volba operace");
Console.WriteLine("Přejete si kalkulačku použít znovu? ano/ne");
platnaVolba = false;
while (!platnaVolba)
{
switch (Console.ReadLine().ToString().ToLower())
{
case "ano":
platnaVolba = true;
pokracovat = true;
break;
case "ne":
platnaVolba = true;
pokracovat = false;
break;
default:
Console.WriteLine("Neplatná volba. Zadejte ano/ne !");
break;
}
}
if (pokracovat)
Console.Clear();
}
}
Console.ReadKey();
}
}
}
Tomáš :18.11.2017 10:34
Ahoj Marku chybu máš v tom whilu i když maš pokračovat false ale while kalkulacka == true je pořád true takže mužeš např
switch (Console.ReadLine().ToString().ToLower())
{
case "ano":
platnaVolba = true;
pokracovat = true;
break;
case "ne":
platnaVolba = true;
pokracovat = false;
kalkulacka = false;
break;
default:
Console.WriteLine("Neplatná volba. Zadejte ano/ne !");
break;
}
Super, rád bych to vyzkoušel, ale prý mi chybí } v
while (mocninator)
{
Console.WriteLine("Vybrál sis mocninátor");
Console.WriteLine("Zadejte číslo, které chcete umocnit");
float s = float.Parse(Console.ReadLine());
double d = s;
double m = 2;
Console.WriteLine("Výsledek je: " + Math.Pow(s, m));
}
else
kalkulacka = true;
a já vážně nevím co to má znamenat. Tam kde mají být složené závorky, tak tam jsou.
Ted asi nevím přesně co myslíš ale u mě tvůj kod funguje
static void Main(string[] args)
{
bool kalkulacka = true;
bool mocninator = false;
bool pokracovat = true;
while (pokracovat == true)
{
Console.WriteLine("Vítejte v mé aplikaci, pro začátek si vyber, jestli chceš spustit kalkulačku nebo mocninátor.");
Console.WriteLine("1 - mocninátor");
Console.WriteLine("2 - kalkulačka");
int volba1 = int.Parse(Console.ReadLine());
switch (volba1)
{
case 1:
mocninator = true;
break;
case 2:
kalkulacka = true;
break;
default:
Console.WriteLine("Zadal jste špatnout hodnotu!");
break;
}
if (mocninator)
{
Console.WriteLine("Vybrál sis mocninátor");
Console.WriteLine("Zadejte číslo, které chcete umocnit");
float s = float.Parse(Console.ReadLine());
double d = s;
double m = 2;
Console.WriteLine("Výsledek je: " + Math.Pow(s, m));
Console.WriteLine("Přeješ si aplikaci spustit znovu? ano/ne");
}
switch (Console.ReadLine())
{
case "ano":
pokracovat = true;
break;
case "ne":
Environment.Exit(0);
break;
}
while (kalkulacka == true)
{
Console.WriteLine("Pro začátek musíš zadat dvě čísla, se kterými budeš pracovat");
Console.WriteLine("Zadej první číslo: ");
float a;
while (!float.TryParse(Console.ReadLine(), out a))
Console.WriteLine("Zadal jste neplatné číslo");
Console.WriteLine("Zadej druhé číslo: ");
float b;
while (!float.TryParse(Console.ReadLine(), out b))
Console.WriteLine("Zadal jste neplatné číslo");
Console.WriteLine("Výborně, teď si vyber operaci: ");
Console.WriteLine("1 - sčítání");
Console.WriteLine("2 - odčítání");
Console.WriteLine("3 - násobení");
Console.WriteLine("4 - dělení");
char volba = Console.ReadKey().KeyChar;
Console.ReadKey();
Console.WriteLine("Zvolil jste volbu číslo: " + volba);
float vysledek = 0;
bool platnaVolba = true;
switch (volba)
{
case '1':
vysledek = a + b;
break;
case '2':
vysledek = a - b;
break;
case '3':
vysledek = a * b;
break;
case '4':
vysledek = a / b;
break;
default:
platnaVolba = false;
break;
}
if (platnaVolba)
Console.WriteLine("Výsledek: {0}", vysledek);
else
Console.WriteLine("Neplatná volba operace");
Console.WriteLine("Přejete si kalkulačku použít znovu? ano/ne");
platnaVolba = false;
while (!platnaVolba)
{
switch (Console.ReadLine().ToString().ToLower())
{
case "ano":
platnaVolba = true;
pokracovat = true;
break;
case "ne":
platnaVolba = true;
pokracovat = false;
kalkulacka = false;
break;
default:
Console.WriteLine("Neplatná volba. Zadejte ano/ne !");
break;
}
}
if (pokracovat)
Console.Clear();
}
}
}
}
}
Závažnost Kód Popis Projekt Soubor Řádek Stav potlačení
Chyba CS1513 Očekával se znak }. WhatAnApp
C:\Users\Petr\source\repos\WhatAnApp\WhatAnApp\Program.cs 46 Aktivní
Tak tu chybu jsem už upravil, ale netuším jak ti to může jít. Když
vyberu mocninátor, tak se mě pak nezeptá, jestli chci aplikaci spustit znovu.
Když vyberu kalkulačku, tak ta se ani nespustí, ale rovnou se mě zeptá,
jestli nechci spustit aplikaci znovu.
No asi to vidím tak, že si k tomu potom sednu a nějak to celé
předělám.
Tomáš :18.11.2017 11:32
Ano nefunguje to dobře zaměřoval jsem se jen na na kalkulačku.Především bych uplně zrušil ten mocninator a to logiku hodil do kalkulačky.
Tak jsem se na to podíval a byly tam strašně stupidní chyby. Např. když
se při mocninátoru aplikace zeptala, jestli chci program spustit znovu, tak
jsem tam dal pokracovat = true, ale nedal jsem hodnotu mocninátoru na
false.
Další stupidní chyba byla ta, že jsem
switch (Console.ReadLine().ToString().ToLower())
{
case "ano":
pokracovat = true;
mocninator = false;
Console.Clear();
break;
case "ne":
Environment.Exit(0);
break;
default:
Console.WriteLine("Špatná volba");
break;
}
neměl v bloku s mocninátorem.
Takže teď ještě udělám pár úprav a vrhnu se na další lekce c#.
namespace WhatAnApp
{
class Program
{
static void Main(string[] args)
{
bool kalkulacka = false;
bool mocninator = false;
bool pokracovat = true;
while (pokracovat == true)
{
Console.WriteLine("Vítejte v mé aplikaci, pro začátek si vyber, jestli chceš spustit kalkulačku nebo mocninátor.");
Console.WriteLine("1 - mocninátor");
Console.WriteLine("2 - kalkulačka");
int volba1 = int.Parse(Console.ReadLine());
switch (volba1)
{
case 1:
mocninator = true;
Console.Clear();
break;
case 2:
kalkulacka = true;
Console.Clear();
break;
default:
Console.WriteLine("Zadal jste špatnout hodnotu!");
break;
}
if (mocninator)
{
Console.WriteLine("Vybrál sis mocninátor");
Console.WriteLine("Zadejte číslo, které chcete umocnit");
float s = float.Parse(Console.ReadLine());
double d = s;
double m = 2;
Console.WriteLine("Výsledek je: " + Math.Pow(s, m));
Console.WriteLine("Přeješ si aplikaci použit znovu? ano/ne");
switch (Console.ReadLine().ToString().ToLower())
{
case "ano":
pokracovat = true;
mocninator = false;
Console.Clear();
break;
case "ne":
Environment.Exit(0);
break;
default:
Console.WriteLine("Špatná volba");
break;
}
}
while (kalkulacka == true)
{
Console.WriteLine("Pro začátek musíš zadat dvě čísla, se kterými budeš pracovat");
Console.WriteLine("Zadej první číslo: ");
float a;
while (!float.TryParse(Console.ReadLine(), out a))
Console.WriteLine("Zadal jste neplatné číslo");
Console.WriteLine("Zadej druhé číslo: ");
float b;
while (!float.TryParse(Console.ReadLine(), out b))
Console.WriteLine("Zadal jste neplatné číslo");
Console.WriteLine("Výborně, teď si vyber operaci: ");
Console.WriteLine("1 - sčítání");
Console.WriteLine("2 - odčítání");
Console.WriteLine("3 - násobení");
Console.WriteLine("4 - dělení");
char volba = Console.ReadKey().KeyChar;
Console.ReadKey();
Console.WriteLine("Zvolil jste volbu číslo: " + volba);
float vysledek = 0;
bool platnaVolba = true;
switch (volba)
{
case '1':
vysledek = a + b;
break;
case '2':
vysledek = a - b;
break;
case '3':
vysledek = a * b;
break;
case '4':
vysledek = a / b;
break;
default:
platnaVolba = false;
break;
}
if (platnaVolba)
Console.WriteLine("Výsledek: {0}", vysledek);
else
Console.WriteLine("Neplatná volba operace");
Console.WriteLine("Přejete si aplikaci použít znovu? ano/ne");
platnaVolba = false;
while (!platnaVolba)
{
switch (Console.ReadLine().ToString().ToLower())
{
case "ano":
platnaVolba = true;
pokracovat = true;
kalkulacka = false;
Console.Clear();
break;
case "ne":
platnaVolba = true;
pokracovat = false;
kalkulacka = false;
break;
default:
Console.WriteLine("Neplatná volba. Zadejte ano/ne !");
break;
}
}
}
}
}
}
}
+5 Zkušeností
Marek Lolek:18.11.2017 11:50
Jo to bych mohl, ale chtěl jsem to takhle. Přišlo mi, že bych si to na tom procvičil lépe.
Zobrazeno 11 zpráv z 11.