Du bist nicht eingeloggt.

Login

Pass

Registrieren

Community
Szene & News
Locations
Impressum

Forum / Bits und Bytes

C++ Methoden aufrufen

_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!!

  [Antwort schreiben]

Forum / Bits und Bytes

(c) 1999 - 2026 team-ulm.de - all rights reserved - hosted by ibTEC Team-Ulm

- Presse - Blog - Historie - Partner - Nutzungsbedingungen - Datenschutzerklärung - Jugendschutz -