No teda, člověk vás tu nechá chvilku bez dozoru, a vy se takhle rozšoupnete
Ten skoro druhý konec republiky je jižní Morava a já přebývám poblíž domitey. Ale měl bych pár návrhů k tomu programu, i když už jste se dostali hodně daleko.
Koukám že zadáváte všechny údaje najednou, já jsem to myslel trochu jinak. Metoda zadat() by vyhodila malé okno, a v něm by byl text hlášení a jedno okénko pro zadání čísla. Takže by se volala třeba takhle:
Kód: Vybrat vše
zadat("Napište číslo vaší karty:", &cislo);
zadat("Vložte váš PIN:", &pin);
...
zadat("Kolik peněz chcete vybrat:", &castka);
Prostě jí použít pro každý údaj zvlášť, myslím že takhle by ten formulář pro ní vyšel mnohem jednodušší. Stačilo by naťukat číslo a odeslat buď myší klikem na tlačítko, nebo klávesou Enter.
Druhá možnost je získaný údaj odeslat jako návratovou hodnotu funkce:
Kód: Vybrat vše
cislo = zadat("Napište číslo vaší karty:");
pin = zadat("Vložte váš PIN:");
...
castka = zadat("Kolik peněz chcete vybrat:");
Dáš té metodě text který má vypsat, a na oplátku dostaneš číslo které vložil uživatel. Akorát bacha na záporná čísla, to bych ošetřil přímo v té metodě, protože v žádném případě nesmí být možné záporné číslo zadat, a hlavně ne u částky která se má "vybrat"! Tohle kdysi fungovalo v některých špatně navržených eshopech, takže pár zvídavých lidí si objednalo zboží a ještě dostali peníze na účet
Aby to nebylo možné, metoda se bude opakovat dokud zákazník nevloží číslo větší nebo rovno nule. Cykly znáš, takže while() by bylo ideální. Musíš počítat i s tím že k tomu přijde nějaký blb a zadá úplný nesmysl, který by normálního člověka vůbec nenapadl, a všechny možnosti kde se lze dostat mimo přípustnou hodnotu vždy ošetřit nějakou kontrolou.
Podobně jako se zadat() bych to provedl s metodou zobrazit(), ale tam nastává víc kombinací, protože se může zobrazovat buď samotný text, nebo text a číslo. Ale to není nic neřešitelného, může se přidat další metoda jen pro samotný text, třeba nadpis().
Pro tu databázi bych měl konkrétní návrh:
Kód: Vybrat vše
string jmena[] = {"Viktor Kožený", "Radovan Krejčíř", "Václav Klaus"};
int cisla_karet[] = {19630628, 19681104, 19410619};
int piny[] = {1234, 4321, 0000};
double castky[] = {1234567890, 9876543210, 0};
Jen mi není jasné kde se to jméno mělo použít, leda ho zobrazit současně se zůstatkem.
Ještě zbývá zmínit jeden detail, a to jestli ty peníze budou float nebo integer, protože kdyby se tam měly řešit i haléře, tak by to celý program trochu zkomplikovalo. Buď bych tedy pracoval jen s korunami, a nebo naopak všechna čísla bral jako haléře, a na koruny je převáděl jen při zobrazení, něco jako čísla s pevnou desetinnou čárkou.
Ve skutečnosti se totiž bankovní operace počítají a provádějí zásadně v desítkové soustavě a nikdy ve dvojkové, protože v ní by docházelo k odlišným odchylkám při zaokrouhlování, což je v účetnictví nepřípustné. Také proto se takovéhle věci programují ve víc než padesát let starém jazyku COBOL, který počítá desítkově. A na mnohatunových sálových mainframech bank stále běží desítky let staré programy, odladěné a ověřené miliony testů. V moderních jazycích se řeší pouze rozhraní k nim, podobně jako ty mnou navrhované třídy...
domitea: Co to jako má být? Maloměkké čtvrtcéčko na Linuxu?
"Kazí! Pááníšek to kazí! Kazí rybišku!" Ale jsem rád že jsi aspoň kvůli tomu nevypínal tučňáka

Aktualizováno - dal jsem si to dneska ke snídani: