Podmínky v C#
Ahojte ve spolek! Zkouším si naprogramovat menu v restauraci. Jen jsem se trochu sekla u podmínek. Byl by někdo prosím tak hodný a mrknul se mi na to a případně dal radu? Ve VS mi to háže chybu, že A,B,C atd. neexistuje. A pak ještě mi to nechce přijmout - string prani.
Kdo se do toho pustí, bude nejlepší! Předem moc děkuju... :)
Pro info - učím se programovat teprve pár týdnů, tak se mi moc kdyžtak nesmějte :)
using System;
namespace menu
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("*** Vítejte v naší restauraci! ***");
Console.WriteLine("Vyberte prosím z následující nabídky: ");
Console.WriteLine("1. Polévky");
Console.WriteLine("2. Předkrmy");
Console.WriteLine("3. Hlavní jídla");
Console.WriteLine("4. Dezerty");
Console.WriteLine("5. Nápoje");
Console.Write("Vybraná možnost 1..5: ");
int vybranaKategorie = int.Parse(Console.ReadLine());
switch (vybranaKategorie)
{
case 1:
Console.WriteLine("POLÉVKY: ");
Console.WriteLine("A: Domácí vývar s nudlemi");
Console.WriteLine("B: Čočková");
break;
case 2:
Console.WriteLine("PŘEDKRMY: ");
Console.WriteLine("C: Šunková rolka s křenem");
Console.WriteLine("D: Topinka s pikantní směsí");
break;
case 3:
Console.WriteLine("HLAVNÍ JÍDLA: ");
Console.WriteLine("E: Kuřecí řízek s bramborem");
Console.WriteLine("F: Svíčková s knedlíkem");
Console.WriteLine("G: Vepřo knedlo zelo");
break;
case 4:
Console.WriteLine("DEZERTY: ");
Console.WriteLine("H: Zmrzlinový pohár");
Console.WriteLine("I: Jablečný závin");
break;
case 5:
Console.WriteLine("NÁPOJE: ");
Console.WriteLine("J: Sodovka");
Console.WriteLine("K: Minerální voda");
Console.WriteLine("L: Jablečný džus");
Console.WriteLine("M: Pivo");
Console.WriteLine("N: Turecká káva");
break;
default:
Console.WriteLine("Neznámá volba");
break;
}
Console.WriteLine("Zvol písmeno A..N: ");
string vybranaMoznost = Console.ReadLine();
switch (vybranaMoznost)
{
case A:
Console.WriteLine("Zvoleno: Domácí vývar s nudlemi.");
break;
case B:
Console.WriteLine("Zvoleno: Čočková.");
break;
case C:
Console.WriteLine("Zvoleno: Šunková rolka s křenem.");
break;
}
}
}
}
Nemělo by to A, B, C být v uvozovkách?
IMHO nemelo, protoze by to pak byl string a se stringama to IMHO nefunguje. Ja bych spis zkusil apostrofy (pak jde o znak) a vybrat prvni znak z odpovedi:
A jeste spis bych to resil prez funkce a pole.
A taky bych to v pripade ABC prevedl na velke znaky, aby stisknute 'a' se bralo jako 'A'
A osetril bych si default vsude
A resil odpovedi v druhe urovni s ohledem na uroven prvni, aby si nekdo nevybral "5. Nápoje" a v detailech "A: Domácí vývar s nudlemi"
A protoze bych to resil s ohledem na uroven prvni, tak v druhe urovni by to vzdy zacinalo ABCD... nikoli JKLM...
A dal tam moznost navratu, kdyz se po volbe polivek rozmyslim, ze nechci polivku, ale pivo
A vubec bych udelal vsechno uplne jinak :) ale snad aspon nektere napady zaujmou ...
Se stringama to samozřejmě funguje, takže dát to do uvozovek je správná rada.
Jde pouzit string ve switch? Nemela by ta vybranaMoznost byt declarovana jako CHAR?
Jinak RCE ma pravdu, ze string ma byt v apostrofech.
Stejně bych to dělal úplně jinak
menu.h :
mygetchar.cpp : https://stackoverflow.com/questions/22028142/read-only-one-char-from-cin
menu.cpp :
Krasny kod z roku 1989. Nicmene, tazatel chtel C#.
Hmm, nějak jsem zaměnil # a ++ - nicméně to funguje a mělo by to jít celkem snadno upravit.
Pokud se nelíbí mygetchar, tak se používá na jediném místě a jde místo nej použít cokoli, co vrací jeden znak a ten soubour vyhodit celý - proto jsem to dal zvlášť.
Ale jestli to umíš líp, tak se nestyď a hoď sem tvojí variantu, ať vidíme, jak se to podle tebe dělá dnes - těším se, že to tu do odpoledne bude ve vší kráse