Sorry že sa pýtam takú blbosť ale neviem to a chcem to vedieť: Môj problém mám funkciu ktorá by ma mala posúvať medzi funkciami na vypisovanie to je nepodstatné ale ide o to že mám funkcie otazka1(),otazka2()...Tak až do desať a potrebujem niečo takéto
Keď už potrebuješ takúto hnusnosť, tak si môžeš jednoducho spraviť funkciu s argumentom int a podľa toho v switch priradzuj príslušnú funkciu.
A buď ju vykonaj na mieste, alebo pokračuj v hnusnostiach a vráť si ukazateľ na ňu.
(Predpokladám, źe sa bavíme o C++?)
tak to skôr switch alebo to if() ale čo ja viem ak by nato bola nejaká dobrá funkcia niečo ako pri item QString::number(i) a tak ak ma chápeš nebolo by to lepšie riešenie?
//autoeditácia príspevku (11 Máj 2012, 21:48)
áno C++ s Qt
Viper takto, ty si v C++ s kľudným svedomím môžeš vytvoriť pole ukazateľov na funkcie a vykonávať ich v cykle. Ale kto by toto robil?! Skús sem nadhodiť problém, prídeme radšej na nejaké normálnejšie riešenie
už žiadny nieje spravím to cez if() ja len teraz sa snažím prísť na čo najľahšie spracovanie programu pretože keď som ho prvý raz začal písať nakódil som si tam také blbosti úplne že som mal 1500 riadkov celý program a keď som potreboval niečo upraviť nevedel som čo je čo musím si zvyknúť najskôr program dobre premyslieť a až potom písať ale dúfal som že v Qt niečo také bude ako som potreboval ale keď nieje najlepšia alternatíva bude if()
//autoeditácia príspevku (11 Máj 2012, 21:59)
Ale keď si spomeniem ako som na začiatku podceňoval vypísanie platu zamestnanca a potom sa pozriem na tu prvú verziu toho programu tak by som si zaslúžil knihu o C++ otrieskať o hlavu
Neviem čo za zverstvo robíš, ale C++ je postavené na tom, že v ideálnom prípade nemáš NIKDE viac krát rovnaký kód. To, o čo sa snažiš z toho, čo tu vidím, nasvedčuje ale tomu, že máš 10 funkcií, ktoré robia úplne to isté. Ak je to tak, odporúčam ti všetko zmazať a začať odznovu.
BX napísal:A to vás v škole učia, že na zmenu labelu treba samostatnú funkciu?
nie nie to je testovací program s otazkami... A asi najlepšie najprehľadnejšie je každú otázku dať ako funkciu pretože sa musím medzi nimi pohybovať atd.
//autoeditácia príspevku (12 Máj 2012, 10:41)
harrison314 napísal:k teme - co takto polymorfizmus ?
Toto radčej nie ako som napísal využijem radčej if(). Pre môj prípad by to bolo jedno pretože by som ja tak musel zadefinovať tých 10 funkcií ibaže s iními paramtrami a uľahčilo by mi to možno iba volanie. Ale dik zapamätám si tento spôsob.
Viper napísal:nie nie to je testovací program s otazkami... A asi najlepšie najprehľadnejšie je každú otázku dať ako funkciu pretože sa musím medzi nimi pohybovať atd.
A práve preto by si to mal urobiť inak!!! Harrison dobre píše, sú to dáta, nie funkcionalita. Čo ti bráni urobiť jednu funkciu, v ktorej zmeníš otázku podľa parametra? Čo ti bráni urobiť objekt, ktorý bude obsahovať všetky otázky a vypisovať ich podľa potreby? Prečo si myslíš, že to tvoje riešenie je najlepšie a najprehľadnejšie?
Nemyslim si to ale no neviem musim nadtým ešte porozmýšlať. Asi by som to mal tak urobi´t ako hovorite ale potom musím porozmýšlať nad tým ako urobím Ďalej/späť pretože ak by som mal funkciu nwm teraz napr. Otazka(String otazka,string odpoved...) potom by som to musel prepisovať ale ešte nadtým poriadne porzmýšlam a prepíšem to čo najlepšie. Ďakujem za všetky rady
Ok tak za body som povedal že spravim testovací program 10 otazok a knim moznosti samozrejme funkcie dalej spä´t skontrolova a vyhodnoť no a tak stími otázkami by som to mohol teda vyrieśiť tak že vytvorím 1 funkciu otazka(string otazka, string moznost1,...) no tak ale potom neviem či mám vytvoriť desať stringov s otazkami alebo mám zakáždým keď budem volať funkciu napísať to donej ale potom sa zas popíšem pri funkciach ďalejúspäť to je celý môj proglem
Vytvorit triedu Otazka, vytvorit v nej clenov ako text_otazky, moznosti atd atd atd. Nahodit vsetky otazky do napriklad vector-u, drzat si aktualny index otazky a pri stlacani spat a dalej budes len ten index posuvat. Pri stlaceni skontrolovat prejdes ten vector a skontrolujes spravnost kazdej jednej otazky.
Pre usetrenie stresov pri programovani sa drz tohto:
1. Kazda trieda,struktura reprezentuje jednu jednoduchu vec
2. Kazda metoda,funkcia, procedura robi jednu jednoduchu vec, ktora sa da popisat jenoduchou vetov
3. Dedenie pouzivaj iba ak chces pouzit polymorfyzmus.
4. Vsetky data programu by sa mali tahat zo suborov.
5. Vsade kontroluj rozsah a spravnost argumentov a spravne vyhadzuj excepions ( spravny stupen abstrakcie ).
6. Jadro programu a GUI nesmu mat nic spolocne, potom ich spoj nejakou triedov.
7. Pouzivaj co najvsoubecnejsie typy.
8. Kod sa ty nesmie opakovat.
9. Pouzivaj komentare.