Stránka: 1 z 1
| [ Príspevkov: 10 ] | |
Autor | Správa |
---|
Registrovaný: 17.01.12 Prihlásený: 24.01.16 Príspevky: 881 Témy: 13 | 13 Bydlisko: Košice |
Ahojte. Mali sme v škole zadanie, niečo ako kalkulačka. Tu je moj kód: Kód: #include <iostream> using namespace std; int main() { cout<<"Aku matematicku operaciu si prajete vykonať?"<<endl; cout<<"1 = Nasobenie"<<endl; cout<<"2 = Delenie"<<endl; cout<<"3 = Odcitanie"<<endl; cout<<"4 = Scitanie"<<endl; int volba; cin>>volba; if (volba == 1) //Nasobenie { float a; float b; float c; cout<<"Zadajte cislo a: "; cin>>a; cout<<"Zadajte cislo b: "; cin>>b; c=a*b; cout<<"Vysledok cisel AxB sa rovna: "<<c<<endl; cin.get(); cin.get(); } else if (volba == 2) //Delenie { float a; float b; float c; cout<<"Zadajte cislo A: "<<endl; cin>>a; cout<<"Zadajte cislo B: "<<endl; cin>>b; c=a/b; cout<<"Cisledok cisel A/B je: "<<c<<endl; cin.get(); cin.get(); } else if (volba == 3) //Odcitanie { float a; float b; float c; cout<<"Zadajte cislo A: "; cin>>a; cout<<"Zadajte cislo B: "; cin>>b; c=a-b; cout<<"Vysledok cisel A-B je: "<<c<<endl; cin.get(); cin.get(); } else if (volba == 4) //Scitanie { float a; float b; float c; cout<<"Zadajte cislo A: "; cin>>a; cout<<"Zadajte cislo B: "; cin>>b; c=a+b; cout<<"Vysledok cisel A+B je: "<<c<<endl; cin.get(); cin.get(); } return 0; } Moja otázka znie. Ak vykoná program matematickú operáciu, chcem aby sa ma spýtal či si prajem pokračovať alebo nie. Ak by som zadal áno chcem aby sa mi program vrátil naspať do toho "menu" kde si vyberiem matematickú operáciu a ak zvolím nie tak aby pokračoval k return 0; a následne sa zatvoril. Viem že tú otázku spravím cez podmienku if else, ale netuším ako by som mohol program dostať opať na začiatok. Vopred ďakujem za všetky odpovede a rady.
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 | 66 Bydlisko: Žilina |
Toto vás teraz učia v škole? Žiadne základy OOP? Toto čo si sem dal je obyčajná špageta, pochopiteľne nevidíš, kde je problém. Nehovoriac o formátovaní kódu..... Mal by si mať aspoň niečo takéto: Kód: int main() { bool again = true; do { // podla potreby precistit okno // nastavenie podmienok pre uzivatela // vytvorenie objektu Kalkulacka a nastavenie vlastnosti // na zaklade volby uzivatela vybrat spravnu metodu triedy Kalkulacka (prikaz switch....) // zistit od uzivatela, ci chce pokracovat a patricne nastavit premennu "again" } while (again); } Nebudem ti dávať copy&paste riešenie, jednak nie som c++ programátor a druhak je to úloha do školy, skús sa trochu potrápiť.
_________________ C#, PHP, ... |
|
Registrovaný: 17.01.12 Prihlásený: 24.01.16 Príspevky: 881 Témy: 13 | 13 Bydlisko: Košice |
Už som na to prišiel. Vobec ma nenapadlo použiť cyklus do while. A áno Walther, takéto veci nás učia v škole. Ak by niekoho zaujímal kód, tak tu je: Kód: #include <iostream> using namespace std;
int main() { int option=3; do{ cout<<"Aku matematicku operaciu si prajete vykonať?"<<endl; cout<<"1 = Nasobenie"<<endl; cout<<"2 = Delenie"<<endl; cout<<"3 = Odcitanie"<<endl; cout<<"4 = Scitanie"<<endl; int volba; cin>>volba; if (volba == 1) //Nasobenie { float a; float b; float c; cout<<"Zadajte cislo a: "; cin>>a; cout<<"Zadajte cislo b: "; cin>>b; c=a*b; cout<<"Vysledok cisel AxB sa rovna: "<<c<<endl; cin.get(); cin.get(); } else if (volba == 2) //Delenie { float a; float b; float c; cout<<"Zadajte cislo A: "<<endl; cin>>a; cout<<"Zadajte cislo B: "<<endl; cin>>b; c=a/b; cout<<"Cisledok cisel A/B je: "<<c<<endl; cin.get(); cin.get(); } else if (volba == 3) //Odcitanie { float a; float b; float c; cout<<"Zadajte cislo A: "; cin>>a; cout<<"Zadajte cislo B: "; cin>>b; c=a-b; cout<<"Vysledok cisel A-B je: "<<c<<endl; cin.get(); cin.get(); } else if (volba == 4) //Scitanie { float a; float b; float c; cout<<"Zadajte cislo A: "; cin>>a; cout<<"Zadajte cislo B: "; cin>>b; c=a+b; cout<<"Vysledok cisel A+B je: "<<c<<endl; cin.get(); cin.get(); } cout<<"Prajete si pokracovat?"<<endl; cout<<"1 - Pokracovat"<<endl; cout<<"2 - Ukoncit"<<endl; cin>>option; }while(option == 1); return 0; }
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 | 66 Bydlisko: Žilina |
Povedz mi prosím, že ide o strednú školu a nie VŠ... Nerozumiem ale jednej veci - prečo si sa vôbec nepokúsil ten kód prerobiť podľa toho, ako som ti dal návod? Alebo aspoň použiť switch a vyhnúť sa nekonečnému množstvu duplicitného kódu? Zredukoval by si ten kód na pár riadkov. Tebe stačí pri každej iterácii načítať čísla len raz a potom len vykonať vybranú operáciu podľa toho, čo vyberie užívateľ.
Ak nemáš o programovanie vôbec záujem a berieš to len ako ďalšiu domácu úlohu, kľudne toto odignoruj. Len dúfam, že niekto ten tvoj kód neskopíruje a nebude chcieť reálne použiť.
_________________ C#, PHP, ... |
|
Registrovaný: 17.01.12 Prihlásený: 24.01.16 Príspevky: 881 Témy: 13 | 13 Bydlisko: Košice |
Áno ide o strednú školu. A ej pravda že programovanie ma baví a veľmi rád by som v ňom chcel pokračovať, nie len na tej úrovni aby som prešiel cez ročník.
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 | 66 Bydlisko: Žilina |
Tak sa to uč poriadne rovno od začiatku, inak sa budeš takýchto blbých návykov neskôr veľmi ťažko zbavovať. Nie kvôli škole alebo kvôli mne, ale kvôli sebe... Ono škola je dobrá tak na teóriu (aj to len do istého momentu), ale ak chceš vedieť naozaj programovať, tak je to strašné množstvo samoštúdia. S takýmto kódom možno prejdeš cez písomku, ale na výške a v práci by ťa s tým poslali rovno kade-ľahšie.. Skús to zo srandy prerobiť ak sa ti chce
_________________ C#, PHP, ... |
|
Registrovaný: 17.01.12 Prihlásený: 24.01.16 Príspevky: 881 Témy: 13 | 13 Bydlisko: Košice |
Jasné prerobím to, prečo nie, ak vravíš že sa mi to zíde. Vravíš že to mám spraviť cez cykly a cez funkcie?
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 | 66 Bydlisko: Žilina |
Cyklus ti stačí jeden (do-while). Okrem toho by som miesto "if" použil "switch". Funkcie ako funkcie... Ak ste mali aspoň základy OOP, zišlo by sa urobiť triedu pre kalkulačku a patričné metódy. Ak ste nemali, tak aspoň funkciami, aj keď je to v tomto prípade zbytočné.. Takéto matematické operácie by si mohol robiť kľudne priamo v tele switchu. Keby išlo o niečo komplexnejšie s ťažšími výpočtami, potom by sa už trieda/funkcia zišla.
_________________ C#, PHP, ... |
|
Registrovaný: 17.01.12 Prihlásený: 24.01.16 Príspevky: 881 Témy: 13 | 13 Bydlisko: Košice |
No k switchu som sa nedostal ani počas samoštúdia ani v škole, ale každopádne to skúsim spraviť trocha lepšie, nie takto amatérsky.
|
|
Registrovaný: 14.03.11 Prihlásený: 04.07.24 Príspevky: 815 Témy: 23 | 23 Bydlisko: Bratislava |
Najprv treba porozmýšľať a popísať úlohu. Nie vždy treba diagram, ale pre teba by sa zišiel. A popis je dobré mať v "programátorskom jazyku". Program bude opakovane niečo robiť (to je do { niečo }) kým nebude nejako ukončený ( while niečo ). To niečo bude aritmetika, vypýtam si čísla a operátor. (Ty si to urobil pre každú možnosť, ale stačí to raz... Keď sa identický kód opakuje v zdrojáku, niečo nebude dobre. ) Podľa druhu operátora urobím výpočet. ... A ešte, odsadzovať, odsadzovať, odsadzovať.
|
|
Stránka: 1 z 1
| [ Príspevkov: 10 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Assembler, C, C++, Pascal, Java | 11 | 1125 | 16.12.2007 15:11 sento | | v Assembler, C, C++, Pascal, Java | 2 | 365 | 18.03.2015 19:48 Venco | | v Assembler, C, C++, Pascal, Java | 5 | 679 | 30.01.2011 13:33 johny3212 | | v Assembler, C, C++, Pascal, Java | 3 | 396 | 04.03.2010 1:40 matwej | | v Assembler, C, C++, Pascal, Java | 0 | 323 | 13.12.2010 17:54 capricorn7 | | v HTML, XHTML, XML, CSS | 6 | 580 | 21.11.2007 18:58 Flety | | v Assembler, C, C++, Pascal, Java | 1 | 582 | 08.02.2010 8:35 juho | | [ Choď na stránku: 1, 2 ] v Správy pre vedenie fóra | 57 | 7495 | 26.11.2005 20:27 JanoF | | v Operačné systémy Microsoft | 1 | 339 | 26.07.2017 17:25 michalesku | | v Novinky | 2 | 500 | 21.01.2012 11:56 walther | | v Ostatné programy | 1 | 334 | 26.09.2011 0:03 mimkork | | v PHP, ASP | 6 | 455 | 14.04.2009 10:53 stenley | | v Webdesign | 18 | 1311 | 02.07.2008 11:21 suchy | | v PHP, ASP | 8 | 773 | 08.04.2008 17:51 pa3ck | | v Operačné systémy Microsoft | 21 | 807 | 30.12.2008 9:37 McDog | | v Assembler, C, C++, Pascal, Java | 5 | 510 | 02.10.2011 15:00 ViVe®s |
|