Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Vorauswahl realisieren? » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Vorauswahl realisieren?
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
bandchef
Mitglied


Dabei seit: 06.10.2009
Beiträge: 28

Vorauswahl realisieren? Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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;
}

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von bandchef: 27.09.2010 21:02.

27.09.2010 21:02 bandchef ist offline E-Mail an bandchef senden Beiträge von bandchef suchen Nehmen Sie bandchef in Ihre Freundesliste auf
bandchef
Mitglied


Dabei seit: 06.10.2009
Beiträge: 28

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 bandchef ist offline E-Mail an bandchef senden Beiträge von bandchef suchen Nehmen Sie bandchef in Ihre Freundesliste auf
3FingerbreitNougat
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 bandchef ist offline E-Mail an bandchef senden Beiträge von bandchef suchen Nehmen Sie bandchef in Ihre Freundesliste auf
Gast
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 bandchef ist offline E-Mail an bandchef senden Beiträge von bandchef suchen Nehmen Sie bandchef in Ihre Freundesliste auf
Gast
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » Vorauswahl realisieren?