[ 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 | 13
Bydlisko: Košice
NapísalOffline : 12.04.2013 13:31 | [C++] Návrat na začiatok programu

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 | 66
Bydlisko: Žilina
NapísalOffline : 12.04.2013 14:24 | [C++] Návrat na začiatok programu

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 | 13
Bydlisko: Košice
Napísal autor témyOffline : 12.04.2013 14:58 | [C++] Návrat na začiatok programu

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 | 66
Bydlisko: Žilina
NapísalOffline : 12.04.2013 15:17 | [C++] Návrat na začiatok programu

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 | 13
Bydlisko: Košice
Napísal autor témyOffline : 12.04.2013 22:47 | [C++] Návrat na začiatok programu

Á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 | 66
Bydlisko: Žilina
NapísalOffline : 12.04.2013 22:57 | [C++] Návrat na začiatok programu

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 | 13
Bydlisko: Košice
Napísal autor témyOffline : 12.04.2013 23:04 | [C++] Návrat na začiatok programu

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 | 66
Bydlisko: Žilina
NapísalOffline : 12.04.2013 23:09 | [C++] Návrat na začiatok programu

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 | 13
Bydlisko: Košice
Napísal autor témyOffline : 13.04.2013 12:36 | [C++] Návrat na začiatok programu

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ý: 04.07.24
Príspevky: 815
Témy: 23 | 23
Bydlisko: Bratislava
NapísalOffline : 15.04.2013 17:49 | [C++] Návrat na začiatok programu

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


 [ Príspevkov: 10 ] 


[C++] Návrat na začiatok programu



Podobné témy

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

Osetrenie vstupov programu v C

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

11

1125

16.12.2007 15:11

sento

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

Ako ma vzhlad C programu

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

2

365

18.03.2015 19:48

Venco

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

vkladanie grafiky do C programu

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

5

679

30.01.2011 13:33

johny3212

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

Otazka ohladok programu v C

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

3

396

04.03.2010 1:40

matwej

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

323

13.12.2010 17:54

capricorn7

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

zakaz - navrat spat

v HTML, XHTML, XML, CSS

6

580

21.11.2007 18:58

Flety

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

assembler - navrat z podprogramu

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

1

582

08.02.2010 8:35

juho

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

7495

26.11.2005 20:27

JanoF

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

Návrat na 7-ku

v Operačné systémy Microsoft

1

339

26.07.2017 17:25

michalesku

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

Android: Kodak Polaroid: návrat optického zoomu

v Novinky

2

500

21.01.2012 11:56

walther

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

Návrat kariet zo zavretého okno Mozilla

v Ostatné programy

1

334

26.09.2011 0:03

mimkork

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

navrat na formular s udajmi ktore uzivatel zadal

v PHP, ASP

6

455

14.04.2009 10:53

stenley

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

zaciatok

v Webdesign

18

1311

02.07.2008 11:21

suchy

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

zaciatok

v PHP, ASP

8

773

08.04.2008 17:51

pa3ck

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

vista - začiatok :)

v Operačné systémy Microsoft

21

807

30.12.2008 9:37

McDog

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

java začiatok

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

5

510

02.10.2011 15:00

ViVe®s



© 2005 - 2025 PCforum, edited by JanoF