Diskuze: Cyklus while

C# .NET .NET (C# a Visual Basic) Cyklus while American English version English version

Avatar
exicap
Člen
Avatar
exicap:

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
Redaktor
Avatar
Odpovídá na exicap
gcx11:

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:

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:

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:

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.
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.