Vorauswahl realisieren? |
bandchef
Mitglied
Dabei seit: 06.10.2009
Beiträge: 28
|
|
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!
|
|
27.09.2010 21:18 |
|
|
3FingerbreitNougat unregistriert
|
|
neue funktion.
parameter: a, b und die operation (+-*/)
rückgabewerte: zahl
|
|
28.09.2010 04:54 |
|
|
bandchef
Mitglied
Dabei seit: 06.10.2009
Beiträge: 28
|
|
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?
|
|
28.09.2010 10:11 |
|
|
Gast unregistriert
|
|
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
|
|
28.09.2010 11:27 |
|
|
Gast unregistriert
|
|
nur bitte nicht gerade operator als name für den char! da könntes probleme geben
|
|
28.09.2010 11:28 |
|
|
bandchef
Mitglied
Dabei seit: 06.10.2009
Beiträge: 28
|
|
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!
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von bandchef: 28.09.2010 21:12.
|
|
28.09.2010 21:10 |
|
|
Gast unregistriert
|
|
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( );
}
}
|
|
29.09.2010 08:36 |
|
|
Gast unregistriert
|
|
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( );
}
}
|
|
29.09.2010 08:48 |
|
|
|