Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 10 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
[C++] Návrat na začiatok programu

Registrovaný: 17.01.12
Prihlásený: 24.01.16
Príspevky: 881
Témy: 13
Bydlisko: Košice
Príspevok NapísalOffline : 12.04.2013 13:31

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.


Offline

Skúsený užívateľ
Skúsený užívateľ
[C++] Návrat na začiatok programu

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14572
Témy: 66
Bydlisko: Žilina
Príspevok NapísalOffline : 12.04.2013 14:24

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

Užívateľ
Užívateľ
[C++] Návrat na začiatok programu

Registrovaný: 17.01.12
Prihlásený: 24.01.16
Príspevky: 881
Témy: 13
Bydlisko: Košice
Príspevok Napísal autor témyOffline : 12.04.2013 14:58

Už som na to prišiel. Vobec ma nenapadlo použiť cyklus do while. :roll: 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;
}


Offline

Skúsený užívateľ
Skúsený užívateľ
[C++] Návrat na začiatok programu

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14572
Témy: 66
Bydlisko: Žilina
Príspevok NapísalOffline : 12.04.2013 15:17

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

Užívateľ
Užívateľ
[C++] Návrat na začiatok programu

Registrovaný: 17.01.12
Prihlásený: 24.01.16
Príspevky: 881
Témy: 13
Bydlisko: Košice
Príspevok Napísal autor témyOffline : 12.04.2013 22:47

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


Offline

Skúsený užívateľ
Skúsený užívateľ
[C++] Návrat na začiatok programu

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14572
Témy: 66
Bydlisko: Žilina
Príspevok NapísalOffline : 12.04.2013 22:57

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

Užívateľ
Užívateľ
[C++] Návrat na začiatok programu

Registrovaný: 17.01.12
Prihlásený: 24.01.16
Príspevky: 881
Témy: 13
Bydlisko: Košice
Príspevok Napísal autor témyOffline : 12.04.2013 23:04

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?


Offline

Skúsený užívateľ
Skúsený užívateľ
[C++] Návrat na začiatok programu

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14572
Témy: 66
Bydlisko: Žilina
Príspevok NapísalOffline : 12.04.2013 23:09

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

Užívateľ
Užívateľ
[C++] Návrat na začiatok programu

Registrovaný: 17.01.12
Prihlásený: 24.01.16
Príspevky: 881
Témy: 13
Bydlisko: Košice
Príspevok Napísal autor témyOffline : 13.04.2013 12:36

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.


Offline

Užívateľ
Užívateľ
[C++] Návrat na začiatok programu

Registrovaný: 14.03.11
Prihlásený: 02.08.23
Príspevky: 814
Témy: 23
Bydlisko: Bratislava
Príspevok NapísalOffline : 15.04.2013 17:49

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


Odpovedať na tému [ Príspevkov: 10 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. vkladanie grafiky do C programu

v Assembler, C, C++, Pascal, Java

5

637

30.01.2011 13:33

johny3212 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Otazka ohladok programu v C

v Assembler, C, C++, Pascal, Java

3

353

04.03.2010 1:40

matwej Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Osetrenie vstupov programu v C

v Assembler, C, C++, Pascal, Java

11

1079

16.12.2007 15:11

sento Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako ma vzhlad C programu

v Assembler, C, C++, Pascal, Java

2

326

18.03.2015 19:48

Venco Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Error pri nacitani programu do C++ aj pred kompilaciou...

v Assembler, C, C++, Pascal, Java

0

289

13.12.2010 17:54

capricorn7 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zakaz - navrat spat

v HTML, XHTML, XML, CSS

6

542

21.11.2007 18:58

Flety Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ponechat subfora ci navrat ????

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Správy pre vedenie fóra

57

7393

26.11.2005 20:27

JanoF Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Návrat na 7-ku

v Operačné systémy Microsoft

1

286

26.07.2017 17:25

michalesku Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. assembler - navrat z podprogramu

v Assembler, C, C++, Pascal, Java

1

533

08.02.2010 8:35

juho Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Android: Kodak Polaroid: návrat optického zoomu

v Novinky

2

449

21.01.2012 11:56

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Návrat kariet zo zavretého okno Mozilla

v Ostatné programy

1

308

26.09.2011 0:03

mimkork Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. navrat na formular s udajmi ktore uzivatel zadal

v PHP, ASP

6

411

14.04.2009 10:53

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zaciatok

v PHP, ASP

8

734

08.04.2008 17:51

pa3ck Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zaciatok

v Webdesign

18

1256

02.07.2008 11:21

suchy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. na zaciatok

v Webdesign

11

971

04.11.2008 13:05

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. java začiatok

v Assembler, C, C++, Pascal, Java

5

464

02.10.2011 15:00

ViVe®s Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra