Frage zu Funktion im Taschenrechner Programm
-
Hallo,
mein erster Taschenrechner den ich gemacht habe der sah so aus:
#include <iostream> using namespace std; int main() { int nummer,zahl1,zahl2,add,zahl3,zahl4,sub,nochmal; do { system("CLS"); cout<<"(1) Addieren \n"; cout<<"(2) Subtrahieren\n"; cout<<"\n"; cout<<"Nummer eingeben: "; cin>>nummer; if (nummer==1) { cout<<"Geben sie die erste Zahl ein: \n"; cin>>zahl1; cout<<"Geben sie die zweite Zahl ein: \n"; cin>>zahl2; add = zahl1+zahl2; cout<<"Das Ergebniss lautet"<<add<<"\n"; cout<<"Wollen sie noch etwas berechne ? 1=Ja, 2=Nein\n"; cin>>nochmal; } if (nummer==2) { cout<<"Geben sie die erste Zahl ein: \n"; cin>>zahl3; cout<<"Geben sie die zweite Zahl ein: \n"; cin>>zahl4; sub = zahl3-zahl4; cout<<"Das Ergebniss lautet"<<sub<<"\n"; cout<<"Wollen sie noch etwas berechne ? 1=Ja, 2=Nein\n"; cin>>nochmal; } } while(nochmal==1); system("PAUSE"); }Jetzt möchte ich das aber mal mit den Funktionen ausprobieren, muss man dann da auch die if abfragen in eine extra funktion packen ?
Hier der Source Code:
#include <iostream> using namespace std; void ausgabe(int menu); int main () { int menu; ausgabe(menu); system("PAUSE"); } void ausgabe(int menu) { cout<<"~~Taschenrechner~~\n"; cout<<"\n"; cout<<"(1) Addieren\n"; cout<<"(2) Subtrahieren\n"; cout<<"\n"; cout<<"Nummer Eingeben: "; cin>>menu; }
-
Das was in deinen if-Abfragen steht solltest du jeweils in Funktionen packen. Also eine Funktion für Zweig 1 und eine weitere für Zweig 2.
-
ok thx
-
Wenn du das Funktional lösen willst, dann so:
int menu() { cout << "Menu ausgeben..." << endl; // ... return auswahl; }Wenn du das Prozedural lösen möchtest:
void menu(int& menuauswahl) { cout << "Menu ausgeben..." << endl; // ... menuauswahl = auswahl; }Wobei ich die funktionale Variante vorzöge, da diese sich angenehmer verwenden lässt, zum Beispiel in switch-case-blöcken:
switch( menu() ) { case 1: addieren(); break; case 2: subtrahieren(); break; // ... }Und um mit den Worten des Meister Yoda zu schreiben: Vergessen musst, was füher du gelernt (Batch).

Grüße... Heiko
-
Dann solltest du der Funktion menu auch einen Wert zurückgeben lassen, sonst kannst du sie nicht in switch verwenden. Die while-schleife muß ja auch noch bedient werden.
int menu() { cout << "Menu ausgeben..." << endl; // ... return auswahl; }