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ý.
Avatar
exicap
Člen
Avatar
exicap:15.1.2015 15:27

Hoj, začal jsem se včera učit programovat v c# dle zde dostupných návodů. Momentálně jsem na lekci 6 a zhotovil jsem kalkulačku, která se díky uzavření do cyklu while ptá uživatele, zda chce spočítat další příklad. No a napadlo mě uplatnit tento cyklus i na část kodu kalkulačky, a sice na část, kde kalkulačka vypíše neplatná volba, pokud uživatel zvolí při výběru matematické operace jiné číslo než 1 - 4. V takovém případě bych chtěl, aby program napsal "neplatná volba" a na dalším řádku se vrátil k "Vyberte matematickou operaci" a byly mu opět nabídnuty možnosti 1 - 4. Toho jsem se snažil docílit pomocí využití cyklu while, jenže mi to nějak nejde nastartovat. Konkrétně to hlásí eror v použití termínu else.

break;
case 3:
vysledek = a * b;
break;
case 4:
vysledek = a / b;
break;
}
string neplatna = "Neplatná volba";
while (neplatna == "Neplatná volba")
{
if ((volba > 0) && (volba < 5))
Console.Write­Line("Výsledek: {0}", vysledek);
neplatna = "hrad";
else
Console.Write­Line("Neplatná volba");
neplatna = "Neplatná volba";
}
Console.Write­Line("Přejete si spočítat další příklad? ano/ne");
dalsi = Console.ReadLine();
}
Console.Write­Line("Děkujeme za použití naší kalkulačky. Kalkulačku ukončíte stiskem libovolné klávesy");
Console.ReadKey();

Snad mě alespoň někdo pochopil:-).

 
Odpovědět
15.1.2015 15:27
Avatar
gcx11
Tvůrce
Avatar
Odpovídá na exicap
gcx11:15.1.2015 15:29

Ahoj, u if a else Ti chybí složené závorky.

 
Nahoru Odpovědět
15.1.2015 15:29
Avatar
Odpovídá na exicap
Michal Haňáček:15.1.2015 15:41

Ahoj, při rychlym průzkumu zdrojáku máš cybu tady

if ((volba > 0) && (volba < 5))
  Console.WriteLine("Výsledek: {0}", vysledek);
  neplatna = "hrad";
else ...

A tu konkrétně v tom, že v IFu chceš mít dvě operace, ale nemáš ho ohraněný závorkami, tedy je IFem ovlivněn jen příkaz

Console.WriteLine("Výsledek: {0}", vysledek);

a tedy se blok ELSE nema k čemu vztáhnout. Správně by to měo být takto

if ((volba > 0) && (volba < 5))
{
  Console.WriteLine("Výsledek: {0}", vysledek);
  neplatna = "hrad";
} else
{
  ...
  ...
}
Nahoru Odpovědět
15.1.2015 15:41
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
exicap
Člen
Avatar
exicap:15.1.2015 15:41

Jo, máte pravdu. Děkuju. Už jsem to opravil a jede to perfektně. Jen mi není jasné kdy se tam ty závorky musí psát a kdy ne. Je to tak, že když mám pod if a zároveň pod else pouze jeden příkaz, tak to nutné není, ale pokud jich je tam už více než 1, tak se závorky psát musí právě proto, že jinak by to bralo v potaz jen ten jeden příkaz hned pod if/else?

Editováno 15.1.2015 15:43
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
15.1.2015 15:41
Avatar
Odpovídá na exicap
Michal Haňáček:15.1.2015 15:45

Přesně jak jsi řekl. Pokud je ve větvi IF/ELSE pouze jeden příkaz závorky psát nemusíš.

Nahoru Odpovědět
15.1.2015 15:45
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
exicap
Člen
Avatar
Odpovídá na Michal Haňáček
exicap:15.1.2015 16:06

Super, díky!

 
Nahoru Odpovědět
15.1.2015 16:06
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.