_Hausmeister - 31
Halbprofi
(offline)
Dabei seit 03.2010
214
Beiträge
|
Geschrieben am: 26.09.2010 um 19:50 Uhr
Zuletzt editiert am: 26.09.2010 um 19:51 Uhr
|
|
Hi an alle C++ Speziallisten da draußen!!!
lerne gerade C++ und hab vorher schon Java gelernt.
Tja, jetzt probiere ich grad bissle rum und bin dabei nen (zwar sehr sinnlosen, aber zum Üben gedachten) Rechner zu schriben.
In dem Rechner gibt es verschiedene Methoden, die sich gegenseitig aufrufen sollen. Naja in der Methode addition() bei dem Swich-Case geht das aber net....
In Java hätte ich das Problem mit ner public class gelöst, aber in C++ ka :(
Hier der Code:
#include <cstdlib>
#include <iostream>
using namespace std;
int a, b, ergebnis;
char eingabe;
int addition()
{
cout << "Geben Sie bitte 2 zu addierende Zahlen ein: " << endl;
cout << "1. Zahl" << endl;
cin >> a;
cout << "2. Zahl" << endl;
cin >> b;
ergebnis = a + b;
cout << "Ergebnis: " << ergebnis << endl;
cout << "Weiterrechnen?(j/n)" << endl;
cin >> eingabe;
switch (eingabe)
{
case 'j': auswahl();
break;
case 'n': cout << "Vielen Dank! Auf Wiedersehn" << endl;
}
return 0;
}
void multiplikation()
{
}
void flaecherechteck()
{
}
int auswahl()
{
int rechenoperation;
cout << endl << "**** Taschenrechner ****" << endl;
cout << "Es stehen ihnen folgende Rechenoperationen zur auswahl:" << endl;
cout << "1: Addition" << endl << "2: Multiplikation" << endl << "3: Flaecheninhalt eines Rechtecks" << endl;
cin >> rechenoperation;
if (rechenoperation == 1) addition();
if (rechenoperation == 2) multiplikation();
if (rechenoperation == 3) flaecherechteck();
system ("PAUSE");
return rechenoperation;
}
int main(){
auswahl();
}
Apocalypse now!!
|
|
warlock - 38
Profi
(offline)
Dabei seit 11.2005
446
Beiträge
|
|
Geschrieben am: 26.09.2010 um 20:00 Uhr
|
|
1. wenn du nur auf j oder n prüfst würd ich eher nen if nehmen
2. du gehst in die auswahl adiderste zwei zahlen und rufst in der addition dann wieder die auswahl auf, übergibts hierbei keinen der drei möglichen zahlen und must wiedermit zwei neuen zahlen rechnen.
die ganze sache macht also keinen wirklichen sinn
Kaffee ohne Koffein ist wie seine Schwester zu lecken. Schmeckt richtig, ist aber falsch.
|
|
_Hausmeister - 31
Halbprofi
(offline)
Dabei seit 03.2010
214
Beiträge
|
|
Geschrieben am: 26.09.2010 um 20:03 Uhr
|
|
ok im code steht "weiterrechnen" aber ich will eigentlich nur, dass man eine weitere Rechenoperation nutzen kann, (noch) nicht mit ergebnisen weiterrechnen.
Apocalypse now!!
|
|
lawrence85 - 40
Fortgeschrittener
(offline)
Dabei seit 05.2006
35
Beiträge
|
|
Geschrieben am: 26.09.2010 um 20:07 Uhr
|
|
wenn mich nicht alles täuscht, ist die funktion ausgabe() in der funktion addition() nicht aufrufbar, weil sie erst weiter unten definiert wird...
es gibt aber die möglichkeit die methode bereits weiter oben durch eine deklaration bekannt zu machen:
du kannst vor der addition() methode folgende zeile einfügen, dann müsste es funzen:
int auswahl();
Zuletzt geändert von Jesus, insgesamt 1874635737839488398476262384733434-mal geändert
|
|
spriggan - 40
Anfänger
(offline)
Dabei seit 06.2004
16
Beiträge
|
|
Geschrieben am: 26.09.2010 um 20:07 Uhr
|
|
außerdem gehts ja au ned um sinn oder unsinn :P
Also mal ne produktive Antwort:
Du musst die Methoden oben erstmal bekanntmachen, damit du sie benutzen kannst:
int auswahl();
am Anfang hinschreiben (z.B. direkt nach dem using namespace), damit c++ weiss, dass da nachher noch die implementierte Methode kommt. Dann sollts auch gehen
We're from Sweden! Where the MEN are MEN and the WOMEN are MEN! [Soilwork]
|
|
warlock - 38
Profi
(offline)
Dabei seit 11.2005
446
Beiträge
|
|
Geschrieben am: 26.09.2010 um 20:11 Uhr
|
|
Zitat von _Hausmeister: ok im code steht "weiterrechnen" aber ich will eigentlich nur, dass man eine weitere Rechenoperation nutzen kann, (noch) nicht mit ergebnisen weiterrechnen.
dann lauf einfach aus der fkt raus und mach dann die abfrage nach dem weiterechnen.
so bekommst ein fkt call gewirr hin das echt ned schön ist, weil du immer tiefer gehst, aber eigentlich nur eine fkt eben bräuchtest
Kaffee ohne Koffein ist wie seine Schwester zu lecken. Schmeckt richtig, ist aber falsch.
|
|
_Hausmeister - 31
Halbprofi
(offline)
Dabei seit 03.2010
214
Beiträge
|
|
Geschrieben am: 26.09.2010 um 20:13 Uhr
|
|
ok danke Leute
habt alle recht gehabt ^^
Apocalypse now!!
|
|
Ketzu - 39
Experte
(offline)
Dabei seit 11.2008
1535
Beiträge
|
|
Geschrieben am: 26.09.2010 um 21:23 Uhr
|
|
Nachdem deine Frage ja bereits beantwortet wurde (da C++ nur Dinge kennt die bereits früher (=weiter oben) im Code deklariert wurden) vielleicht noch ein paar andere Kleinigkeiten:
Das Prinzip des gegenseitigen Aufrufs ist nicht besonders schlau, da bei jedem Aufruf Overhead anfällt und früher oder später der Speicher aufgebraucht würde. Das mag bei so einem Programm kein Problem sein, ist aber keine gute Idee sich sowas durchtgehen zu lassen.
Bessere Lösung:
Nach der Rechnung Rückkehr ins Hauptprogramm in dem eine Schleife läuft die abfragt ob man eine weitere Berechnung ausführen will.
Wenn du ohnehin nicht vor hast etwas zurück zu geben, kannst du auch den Rückgabewert "void" angeben und dann z.B. "return ;" schreiben oder ganz weg lassen.
Deine Variablen solltest du eventuell in den dazugehörigen Funktionen deklarieren, da öffentliche Deklerationen in Programmen schnell zu Problemen führen und es in deinem Programm keinen Zugriff darauf gibt außerhalb der nötigen Methoden.
Eine Meinung vertreten, heißt nicht sie zu teilen, sondern versuchen sie zu verstehen.
|
|
_Hausmeister - 31
Halbprofi
(offline)
Dabei seit 03.2010
214
Beiträge
|
|
Geschrieben am: 26.09.2010 um 22:25 Uhr
|
|
Zitat von Ketzu: Nachdem deine Frage ja bereits beantwortet wurde (da C++ nur Dinge kennt die bereits früher (=weiter oben) im Code deklariert wurden) vielleicht noch ein paar andere Kleinigkeiten:
Das Prinzip des gegenseitigen Aufrufs ist nicht besonders schlau, da bei jedem Aufruf Overhead anfällt und früher oder später der Speicher aufgebraucht würde. Das mag bei so einem Programm kein Problem sein, ist aber keine gute Idee sich sowas durchtgehen zu lassen.
Bessere Lösung:
Nach der Rechnung Rückkehr ins Hauptprogramm in dem eine Schleife läuft die abfragt ob man eine weitere Berechnung ausführen will.
Wenn du ohnehin nicht vor hast etwas zurück zu geben, kannst du auch den Rückgabewert "void" angeben und dann z.B. "return ;" schreiben oder ganz weg lassen.
Deine Variablen solltest du eventuell in den dazugehörigen Funktionen deklarieren, da öffentliche Deklerationen in Programmen schnell zu Problemen führen und es in deinem Programm keinen Zugriff darauf gibt außerhalb der nötigen Methoden.
Okay danke!
ich denke ich könnte das so umschreiben...
Ich muss ja auch noch jedemenge sachen, wie pointer, arrays, Klassen, was es halt in C++ so gibt, auch noch lernen
aber alles zu seiner zeit
Apocalypse now!!
|
|