Rückgabewert
-
hy leute,
hab ma wieder n kleines prob. Ich glaub auch dass ist ziemlich einfach zu lösen, da es recht simpel ist, aber irgendwie steig ich heut nicht dahinter....

[cpp]polymorphie.cpp (by) Matthias Walter #include<iostream.h> void eingabe (double radius, double hoehe); void eingabe (double seitea); void eingabe (double seitea, double seiteb, double seitec); double berechnung (double radius, double hoehe); double berechnung (double seitea); double berechnung (double seitea, double seiteb, double seitec); void main () { char ausw; do { cout<<endl<<"Wählen Sie zwischen der Berechung des Volumens von:"<<endl<<endl; cout<<"-------------------"<<endl; cout<<"Zylinder\t(z)\nWürfel\t\t(w)\nQuader\t\t(q)"<<endl; cout<<"-------------------"<<endl<<endl; cin >>ausw; } while (ausw !='z' && ausw !='w' && ausw !='q'); switch (ausw) { case 'z': { double vol=0; double radius=0, hoehe=0; eingabe (radius, hoehe); berechnung (radius, hoehe); cout<<endl<<"Das Volumen des Zylinders beträgt: "<<vol<<endl; } case 'w': { double vol=0; double seitea=0; eingabe (seitea); berechnung (seitea); cout<<endl<<"Das Volumen des Würfels beträgt: "<<vol<<endl; } case 'q': { double vol=0; double seitea=0, seiteb=0, seitec=0; eingabe (seitea, seiteb, seitec); berechnung (seitea, seiteb, seitec); cout<<endl<<"Das Volumen des Quaders beträgt: "<<vol<<endl; } } } void eingabe (double radius, double hoehe) { cout<<"Bitte Radius eingeben: "; cin >>radius; cout<<"Bitte Höhe eingeben: "; cin >>hoehe; } void eingabe (double seitea) { cout<<"Bitte Seite a eingeben: "; cin >>seitea; } void eingabe (double seitea, double seiteb, double seitec) { cout<<"Bitte Seite a eingeben: "; cin >>seitea; cout<<"Bitte Seite b eingeben: "; cin >>seiteb; cout<<"Bitte Seite c eingeben: "; cin >>seitec; } double berechnung (double radius, double hoehe) { double vol; vol=3.14159265*radius*radius*hoehe; return (vol); } double berechnung (double seitea) { double vol; vol=seitea*seitea*seitea; return (vol); } double berechnung (double seitea, double seiteb, double seitec) { double vol; vol=seitea*seiteb*seitec; return (vol); }[/cpp]Also... das genau problem ist, dass ich bei den eingaben keine werte zurückgegeben werden. Habs schon mit ner double funktion und return probiert, hat aber auch nicht hin. Zudem sollte es wenns geht ohne return gehen bei der eingabe.
Also eigentlich sollen die Werte von der Eingabe ins Hauptprogramm übergeben werden und dort für die Funktion berechnung bereitgestellt bzw. übergeben werden.geht aber alles irgendwie nicht,
, da in der letztendlichen Ausgabe immer 0 das Ergebnis ist. (von der Initialisierung)thx für alle hilfen - ps.: hab c++ noch nich all zu lang und das ist ne aufgabe von der schule... -> wenns denn jemand komisch vorkommt, warum ich sowas programmier

-
void eingabe (double& radius, double& hoehe) { cout<<"Bitte Radius eingeben: "; cin >>radius; cout<<"Bitte Höhe eingeben: "; cin >>hoehe; } void eingabe (double& seitea) { cout<<"Bitte Seite a eingeben: "; cin >>seitea; } void eingabe (double& seitea, double& seiteb, double& seitec) { cout<<"Bitte Seite a eingeben: "; cin >>seitea; cout<<"Bitte Seite b eingeben: "; cin >>seiteb; cout<<"Bitte Seite c eingeben: "; cin >>seitec; }
-
naja... die referenzen lösen das prob aber auch nich...

-
Warum nicht? Hast du es ausprobiert? Und wenn ja, was ist das Problem?
-
klar - habs gerade ausprobiert. naja, das prob ist, dass halt irgendwie kein wert von den funktionen "eingabe" zurückkommen. und damit auch nicht zu "berechnung" übergeben wird...
-
Ja. genau. Und dieses Problem sollten die Referenzen beheben (in der ursprunglichen Version hast du nur in lokale Variablen innerhalb der Eingabefunktion eingelesen; klar, daß da nichts nach Außen durchdringt).
Übrigens: Beim switch-Konstrukt fehlen die break's.
Edit: Und hier ist noch ein Fehler:
double vol=0; double radius=0, hoehe=0; eingabe (radius, hoehe); berechnung (radius, hoehe); cout<<endl<<"Das Volumen des Zylinders beträgt: "<<vol<<endl;Richtig wäre:
double vol=0; double radius=0, hoehe=0; eingabe (radius, hoehe); vol = berechnung (radius, hoehe); cout<<endl<<"Das Volumen des Zylinders beträgt: "<<vol<<endl;
-
ups hast recht mit den breaks. ist mir gar nicht aufgefallen.
achso.... stimmt - die werte müssen ja noch auf vol gespeichert werden...jetzt funzt's!
!!!!thx!!!!
-
Ich habe die Fehler beseitigt , die dein Programm gesoppt haben , doch es gibt noch ein paar fehler in der berechnung.
#include<iostream.h> #include <conio.h> using namespace std; void eingabe (double radiusw, double hoehew) { cout<<"Bitte Radius eingeben: "; cin >>radiusw; cout<<"Bitte Höhe eingeben: "; cin >>hoehew; } void eingabe (double seitea) { cout<<"Bitte Seite a eingeben: "; cin >>seitea; } void eingabe (double seiteat, double seiteb, double seitec) { cout<<"Bitte Seite a eingeben: "; cin >>seiteat; cout<<"Bitte Seite b eingeben: "; cin >>seiteb; cout<<"Bitte Seite c eingeben: "; cin >>seitec; } double berechnung (double radius, double hoehe) { double vol; vol=3.14159265*radius*radius*hoehe; return (vol); } double berechnung (double seiteaf) { double vol; vol=seiteaf*seiteaf*seiteaf; return (vol); } double berechnung (double seiteas, double seitebs, double seitecs) { double vol; vol=seiteas*seitebs*seitecs; return (vol); } int main () { char ausw; do { cout<<endl<<"Wählen Sie zwischen der Berechung des Volumens von:"<<endl<<endl; cout<<"-------------------"<<endl; cout<<"Zylinder\t(z)\nWürfel\t\t(w)\nQuader\t\t(q)"<<endl; cout<<"-------------------"<<endl<<endl; cin >>ausw; } while (ausw !='z' && ausw !='w' && ausw !='q'); switch (ausw) { case 'z': { double vol=0; double radius=0, hoehe=0; eingabe (radius, hoehe); berechnung (radius, hoehe); cout<<endl<<"Das Volumen des Zylinders beträgt: "<<vol<<endl; break; } case 'w': { double vol=0; double seitea=0; eingabe (seitea); berechnung (seitea); cout<<endl<<"Das Volumen des Würfels beträgt: "<<vol<<endl; break; } case 'q': { double vol=0; double seitea=0, seiteb=0, seitec=0; eingabe (seitea, seiteb, seitec); berechnung (seitea, seiteb, seitec); cout<<endl<<"Das Volumen des Quaders beträgt: "<<vol<<endl; break; } } getch(); return 0; }Lightning CAO