Vorauswahl realisieren?

Neue Frage »

Auf diesen Beitrag antworten »
bandchef Vorauswahl realisieren?

Hi Leute!

Ich möchte eine Art "kleinen Taschenrechner" programmieren. Es soll so aussehen, dass der Benutzer am Anfang durch eine kleine Übersicht auswählen kann welche Grundrechenart er benutzen möchte. Ich weiß aber jetzt nicht wie ich am Besten auf die jeweilige do-Schleife hinspringen soll, in der die ausgewählte Grundrechneart abgearbeitet wird.

Ich habs mit einer if-Schleife versucht... Ich weiß aber nicht weiter; leider :-( Könnt ihr mir helfen?

Hier mein Quellcode:


#include<iostream>

using namespace std;


int main(){

char add, sub, mul, div;

cout << "Was moechten Sie tun?" << endl << endl;

cout << "Druecken Sie a zum Addieren!" << endl;
cout << "Druecken Sie s zum Subtrahieren!" << endl;
cout << "Druecken Sie m zum Multiplizieren!" << endl;
cout << "Druecken Sie d zum Dividieren!" << endl;

cin >> add;

if(add == 'a'){


char wert;

do{
double a, b;

cout << "!!!Addition zweier Zahlen!!!" << endl << endl;

cout << "Zahl 1 eingeben: ";
cin >> a;

cout << "Zahl 2 eingeben: ";
cin >> b;

cout << "Ergebnis: " << a + b << endl << endl;

cout << "Zum Beenden j, zum Weitermachen n eingeben: ";
cin >> wert;

cout << endl << endl;

}while(wert != 'j');
}

system("PAUSE");
return 0;
}
 
Auf diesen Beitrag antworten »
bandchef

Ich hab jetzt nochmal überlegt.

Könnte man es evtl. mit Unterfunktionen realisieren? Wenn der Benutzer ein "a" eingibt, dann startet Unterfunktionen xy usw...

Vielleicht könnt ihr mir ja helfen!
Auf diesen Beitrag antworten »
3FingerbreitNougat

neue funktion.

parameter: a, b und die operation (+-*/)

rückgabewerte: zahl
Auf diesen Beitrag antworten »
bandchef

Wie darf man das jetzt verstehen? Ich soll eine neue Funktion schreiben mit den Parametern a, b und den Operationen +, -, *, /, oder wie?

Kannst du vielleicht noch etwas genauer werden?

Wie stellst du es dir vor?

So?

void(){}

Wo muss ich jetzt Parameter und die Operationen hinschreiben?
 
Auf diesen Beitrag antworten »
Gast

du kannst doch einfach deiner fkt die 2 Zahlen und den operator mitgeben

double fkt(double zahl1, double zahl2 , char operator){
switch(operator){
case '-':
return zahl1-zahl2;

...
}
}

so grob der Code
Auf diesen Beitrag antworten »
Gast

nur bitte nicht gerade operator als name für den char! da könntes probleme geben
Auf diesen Beitrag antworten »
bandchef

Danke Leute für eure Antworten.

Ich hab jetzt eine andere und für mich etwas durchsichtigere Lösung gefunden. Ich habs jetzt mit einem case : break; realisiert... Ich weiß, ist bestimmt nicht so ganz elegant, aber es funktioniert, so lange man nicht irgendwelche falsche Eingaben macht. Fehlerabfangen haben wir ohnehin noch nicht gelernt... :-)

Aussehen tut das ganze jetzt so (könnt ihr ruhig ausprobieren; sollte funzen):

#include<iostream>

using namespace std;

int main(){

char e;

cout << "!!! Taschenrechner !!!" << endl;
cout << "----------------------" << endl << endl;
cout << "a druecken um zwei Zahlen zu addieren...!" << endl;
cout << "b druecken um zwei Zahlen zu addieren...!" << endl;
cout << "c druecken um zwei Zahlen zu addieren...!" << endl;
cout << "d druecken um zwei Zahlen zu addieren...!" << endl << endl;
cout << "Eingabe: ";
cin >> e;



switch(e){
case 'a': double f, g;

char w;

do{
cout << "Zahl 1 eingeben: ";
cin >> f;

cout << "Zahl 2 eingeben: ";
cin >> g;

cout << endl;

cout << "Ergebnis: " << f + g << endl << endl << endl;

cout << "Zum Weitermachen j, zum Beenden n druecken: ";
cin >> w;

cout << endl << endl;

}while(w != 'n');

break;



case 'b': double h, i;

char x;

do{
cout << "Zahl 1 eingeben: ";
cin >> h;

cout << "Zahl 2 eingeben: ";
cin >> i;

cout << endl;

cout << "Ergebnis: " << h - i << endl << endl << endl;

cout << "Zum Weitermachen j, zum Beenden n druecken: ";
cin >> x;

cout << endl << endl;

}while(x != 'n');

break;



case 'c': double j, k;

char y;

do{
cout << "Zahl 1 eingeben: ";
cin >> j;

cout << "Zahl 2 eingeben: ";
cin >> k;

cout << endl;

cout << "Ergebnis: " << j * k << endl << endl << endl;

cout << "Zum Weitermachen j, zum Beenden n druecken: ";
cin >> y;

cout << endl << endl;

}while(y != 'n');

break;



case 'd': double l, m;

char z;

do{
cout << "Zahl 1 eingeben: ";
cin >> l;

cout << "Zahl 2 eingeben: ";
cin >> m;

cout << endl;

cout << "Ergebnis: " << l / m << endl << endl << endl;

cout << "Zum Weitermachen j, zum Beenden n druecken: ";
cin >> z;

cout << endl << endl;

}while(z != 'n');

break;
}


system("pause");
return 0;
}


Danke!
Auf diesen Beitrag antworten »
Gast

also so sieht meine loesung aus, ist nur in 2 mins hingeschrieben aber sollte gehen.
Es sind auch schon ansätze von fehlerbehandlungen drin

#include "stdafx.h"
#include <iostream>
#include <limits>

using namespace std;
double DeineFkt(double z1,double z2,char e);
int main()
{
char e;

cout << "!!! Taschenrechner !!!" << endl;
cout << "----------------------" << endl << endl;
cout << "a druecken um zwei Zahlen zu addieren...!" << endl;
cout << "b druecken um zwei Zahlen zu subtrahieren...!" << endl;
cout << "c druecken um zwei Zahlen zu multiplizieren...!" << endl;
cout << "d druecken um zwei Zahlen zu addieren...!" << endl << endl;
cout << "Eingabe: ";
cin >> e;

char beenden = 'B';
do{
double zahl1, zahl2;
cout << "Zahl 1 eingeben: ";
cin>>zahl1;
cout << "Zahl 2 eingeben: ";
cin>>zahl2;
cout<<DeineFkt(zahl1,zahl2,e)<<endl;
cout<<"t druecken zum beenden"<<endl;
}while(beenden !='t');
}


double DeineFkt(double z1,double z2,char e){
switch(e){
case 'a':
return z1+z2;

case 'b':
return z1-z2;

case 'c':
return z1*z2;

case 'd':
if(z2!=0){
return z1/z2;
}else{
//Fuer die Fehlerbehandlung
return numeric_limits<double>::max( );
}
default:
return numeric_limits<double>::min( );
}
}
Auf diesen Beitrag antworten »
Gast

Srry der Code unten war n bissl schlecht, hier der überarbeitete. Sogar mit kleiner Fehlerbehandlung

#include "stdafx.h"
#include <iostream>
#include <limits>

using namespace std;
double DeineFkt(double z1,double z2,char e);
int main()
{
char e;

cout << "!!! Taschenrechner !!!" << endl;
cout << "----------------------" << endl << endl;
cout << "a druecken um zwei Zahlen zu addieren...!" << endl;
cout << "b druecken um zwei Zahlen zu subtrahieren...!" << endl;
cout << "c druecken um zwei Zahlen zu multiplizieren...!" << endl;
cout << "d druecken um zwei Zahlen zu dividieren...!" << endl << endl;
cout << "Eingabe: ";
cin >> e;

char beenden = 'B';
do{
double zahl1, zahl2;
cout << "Zahl 1 eingeben: ";
cin>>zahl1;
cout << "Zahl 2 eingeben: ";
cin>>zahl2;
double tmpdbl = DeineFkt(zahl1,zahl2,e);
if(tmpdbl == numeric_limits<double>::min( )){
cout<<"Ungueltige Operation"<<endl;
}else if(tmpdbl == numeric_limits<double>::max( )){
cout<< "Division durch 0 ist nicht zulaessig"<<endl;
}
else{
cout<< tmpdbl <<endl;
}
cout<<"weitermachen? j = Ja, n= Nein "<<endl;
cin>>beenden;
if(beenden!='n'){
cout<<"Operation eingeben: a-Addition, b-Subtraktion,c-Multiplikation,d-Division"<<endl;
cin >>e;
}
}while(beenden !='n');
}


double DeineFkt(double z1,double z2,char e){
switch(e){
case 'a':
return z1+z2;

case 'b':
return z1-z2;

case 'c':
return z1*z2;

case 'd':
if(z2!=0){
return z1/z2;
}else{
//Fuer die Fehlerbehandlung
return numeric_limits<double>::max( );
}
default:
//Wenn falsche operation gewaehlt
return numeric_limits<double>::min( );
}
}
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »