Hilfe bei Rechner (C++) x.x [Funktionen]
-
Irgendwie hab ichs dennoch ned geschafft x.x
else if(auswahl == 2) { float zahl1, zahl2; printf("\n\n\t Sie haben Addieren gew\x84hlt ! "); printf("\n\n\n\t\t1.Zahl eingeben : "); scanf("%d",&zahl1); printf("\n\n\t\t2.Zahl eingeben : "); scanf("%d",&zahl2); printf("Das Ergebnis ist : &d", addi(zahl1, zahl2)); // keine addresse verwenden! (&) addi(); } float addi(float a, float b) { return a + b; }Hab das probiert auch in ner anderen Form aber es klappt ned x.x
-
DarkDagon schrieb:
Irgendwie hab ichs dennoch ned geschafft x.x
Was genau soll das heißen? x.x
Eine etwas detailliertere Fehlerbeschreibung wäre wirklich hilfreich, wie du dir sicher denken kannst. x.x
Also, was genau klappt nicht? Gibt's eine Fehlermeldung? Ein Fehlverhalten? Wenn ja, wie sieht das aus? x.x
x.x

-
Also habs mal so geschafft das das Programm sich complimiert .
Das Problem was ich jetzt habe überall kommt 0 !!! heraus .
#include <math.h> #include <cstdlib> #include <iostream> using namespace std; char auswahl; float ergebnis; void wurz(float a); void addi(float b,float c); void divi(float d,float e); void subt(float f,float g); void mult(float h,float i); int main(int argc, char *argv[]) { printf("*------------------------------------------------------------------------------*\n\n"); printf(" *Taschenrechner* \n\n"); printf("\t(1) Wurzel\n\n"); printf("\t(2) Addieren\n\n"); printf("\t(3) Dividieren\n\n"); printf("\t(4) Subtrahieren\n\n"); printf("\t(5) Multiplizieren\n"); printf("\n\n*------------------------------------------------------------------------------*"); printf("\n\n\t Geben sie eine Zahl zum jeweiligen Operator ein ! "); printf("\n\n\t -> "); scanf("%d",&auswahl); printf("\n\n*------------------------------------------------------------------------------*"); if(auswahl == 1) { float a; printf("\n\n\t Sie haben Wurzel gew\x84hlt ! "); printf("\n\n\n\t\tZahl eingeben : "); scanf("%d",&a); printf("\n\n\t\tDas Ergebnis ist : %d",a,ergebnis); wurz(a); printf("\n\n\n"); } else if(auswahl == 2) { float b,c; printf("\n\n\t Sie haben Addieren gew\x84hlt ! "); printf("\n\n\n\t\t1.Zahl eingeben : "); scanf("%d",&b); printf("\n\n\t\t2.Zahl eingeben : "); scanf("%d",&c); printf("\n\n\t\tDas Ergebnis ist : %d",b,c,ergebnis); addi(b,c); printf("\n\n\n"); } else if(auswahl == 3) { float d,e; printf("\n\n\t Sie haben Dividieren gew\x84hlt ! "); printf("\n\n\n\t\t1.Zahl eingeben : "); scanf("%d",&d); printf("\n\n\t\t2.Zahl eingeben : "); scanf("%d",&e); printf("\n\n\t\tDas Ergebnis ist : %d",d,e,ergebnis); divi(d,e); printf("\n\n\n"); } else if(auswahl == 4) { float f,g; printf("\n\n\t Sie haben Subtrahieren gew\x84hlt ! "); printf("\n\n\n\t\t1.Zahl eingeben : "); scanf("%d",&f); printf("\n\n\t\t2.Zahl eingeben : "); scanf("%d",&g); printf("\n\n\t\tDas Ergebnis ist : %d",f,g,ergebnis); subt(f,g); printf("\n\n\n"); } else if(auswahl == 5) { float h,i; printf("\n\n\t Sie haben Multiplizieren gew\x84hlt ! "); printf("\n\n\n\t\t1.Zahl eingeben : "); scanf("%d",&h); printf("\n\n\t\t2.Zahl eingeben : "); scanf("%d",&i); printf("\n\n\t\tDas Ergebnis ist : %d",h,i,ergebnis); mult(h,i); printf("\n\n\n"); } system("PAUSE"); return EXIT_SUCCESS; } void wurz(float a) { ergebnis = sqrt(a); } void addi(float b,float c) { ergebnis = b + c; } void divi(float d,float e) { ergebnis = d / e; } void subt(float f,float g) { ergebnis = f - g; } void mult(float h,float i) { ergebnis = h * i; }Wo ist da das Problem

-
Das Problem ist, dass du keine Ahnung hast, was du da eigentlich machst, sorry...

Du gibst ergebnis aus, bevor du überhaupt einen Wert zugewiesen hast. Und im Anschluss führst du dann die jeweilige Funktion aus, die ergebnis einen Wert zuweist.
1. Warum orientierst du dich nicht an dem Beispiel, dass du bekommen hast? Da wurden die Funktionen direkt in die printf-Anweisungen gepackt. Das macht Sinn! So wäre übrigens die Variable ergebnis komplett überflüssig.
2. Kannst du gerne auch über eine Variable ergebnis gehen. Dann weise ihr aber vor der Ausgabe den Ergebniswert zu. Und das am besten nicht über eine Globale, wie du es im Moment machst, sondern über den Rückgabewert der jeweiligen Funktion und eine lokale Variable ergebnis (in main deklarieren).
-
Ich probier ganze Zeit schon rum und ich versteh das mit den Funktionen ned so gut x.x
Gibts ne Hilfe Seite oder so weil das Beispiel naja

P.S : Benütze Blood. Dev C++
-
#include <cmath> // wenn dann schon C++ Header #include <conio.h> // _getch() - nur fuer Windows #include <iostream> using namespace std; // Funktionen deklarieren float wurz(float); float addi(float, float); float divi(float, float); float subt(float, float); float mult(float, float); // Die C-I/O-Anweisungen habe ich durch die C++-Version ersetzt int main(int argc, char *argv[]) { char auswahl; float zahl1, zahl2; do { cout << "*------------------------------------------------------------------------------*\n\n"; cout << " *Taschenrechner* \n\n"; cout << "\t(1) Wurzel\n\n"; cout << "\t(2) Addieren\n\n"; cout << "\t(3) Dividieren\n\n"; cout << "\t(4) Subtrahieren\n\n"; cout << "\t(5) Multiplizieren\n"; cout << "\t(6) Beenden\n"; cout << "\n\n*------------------------------------------------------------------------------*"; cout << "\n\n\t Geben sie eine Zahl zum jeweiligen Operator ein ! "; cout << "\n\n\t -> "; cin >> auswahl; cout << "\n\n*------------------------------------------------------------------------------*"; if (auswahl < '1' || auswahl > '6') { // wenn eine nichtexistierender Menuepunkt eingegeben wurde... cout << "Falsche Eingabe!" << endl; } else if(auswahl == '1') { cout << "\n\n\t Sie haben Wurzel gew\x84hlt ! "; cout << "\n\n\n\t\tZahl eingeben : "; cin >> zahl1; cout << "\n\n\t\tDas Ergebnis ist : " << wurz(zahl1); cout << "\n\n\n"; } else if(auswahl == '2') { cout << "\n\n\t Sie haben Addieren gew\x84hlt ! "; cout << "\n\n\n\t\t1.Zahl eingeben : "; cin >> zahl1; cout << "\n\n\t\t2.Zahl eingeben : "; cin >> zahl2; cout << "\n\n\t\tDas Ergebnis ist : " << addi(zahl1, zahl2); cout << "\n\n\n"; } else if(auswahl == '3') { cout << "\n\n\t Sie haben Dividieren gew\x84hlt ! "; cout << "\n\n\n\t\t1.Zahl eingeben : "; cin >> zahl1; cout << "\n\n\t\t2.Zahl eingeben : "; cin >> zahl2; cout << "\n\n\t\tDas Ergebnis ist : " << divi(zahl1, zahl2); cout << "\n\n\n"; } else if(auswahl == '4') { cout << "\n\n\t Sie haben Subtrahieren gew\x84hlt ! "; cout << "\n\n\n\t\t1.Zahl eingeben : "; cin >> zahl1; cout << "\n\n\t\t2.Zahl eingeben : "; cin >> zahl2; cout << "\n\n\t\tDas Ergebnis ist : " << subt(zahl1, zahl2); cout << "\n\n\n"; } else if(auswahl == '5') { cout << "\n\n\t Sie haben Multiplizieren gew\x84hlt ! "; cout << "\n\n\n\t\t1.Zahl eingeben : "; cin >> zahl1; cout << "\n\n\t\t2.Zahl eingeben : "; cin >> zahl2; cout << "\n\n\t\tDas Ergebnis ist : " << mult(zahl1, zahl2); cout << "\n\n\n"; } cout << "Bitte eine beliebige Taste druecken ..."; _getch(); // schnellere Alternative zu system("pause") } while (auswahl != '6'); return 0; } float wurz(float a) { return sqrt(a); } float addi(float b,float c) { return b + c; } float divi(float d,float e) { return d / e; } float subt(float f,float g) { return f - g; } float mult(float h,float i) { return h * i; }Gruss
Cartman
-
DarkDagon schrieb:
Ich probier ganze Zeit schon rum und ich versteh das mit den Funktionen ned so gut x.x
Gibts ne Hilfe Seite oder so weil das Beispiel naja

P.S : Benütze Blood. Dev C++
Ähm, du kriegst hier doch eine Menge Hilfe! Was nur keiner machen will ist, dir deine Ausgabe komplett vorzukauen. Dafür musst du Verständnis haben. Hier sind ständig Leute, die ihre Hausaufgaben posten und eine Komplettlösung verlangen. Das hilft dir langfristig nicht.
Und zum Beispiel: Das Beispiel ist eigentlich sehr gut und alles, was du brauchst (bis auf den letzten addi-Aufruf, der ist überflüssig, und bei printf muss "%d" stehen, nicht "&d"!). Übernimm den Code mal genauso, wie er da steht (denn das hast du nicht getan, du hast den Code dann noch abgeändert und ihn funktionsuntüchtig gemacht) und ändere die 2 Dinge, die ich gerade angemerkt habe. Dann sollte deine Addition schon mal reibungslos funktionieren. Bist du erstmal soweit, übernimmst du dieses Prinzip für alle anderen Operationen. Da brauchst du ja nur Details zu ändern.
-
Ich weiß das ich von auch ne Menge Hilfe bekomme
Und ich kann ma vorstellen das die meisten Hüs posten und das auch nerven oder ziemlich sauer macht x.x
Aber vielen dank das ihr auch dennoch die Zeit nehmt und sry
Das Blöde ist ich mache genrell nie was mit cout weil wir das ned gelernt haben ich weiß ned für was das steht genauso wie cin
-
Eric Cartman schrieb:
// Die C-I/O-Anweisungen habe ich durch die C++-Version ersetzt
Hm, weiß nicht ob das so gut war. Jetzt wird er gar nix mehr verstehen. Na ja, außerdem wird er den Code jetzt sowieso einfach übernehmen und nicht mehr drüber nachdenken. In meinen Augen war die ganze Mühe, ihm die Funktionalität näher zu bringen, jetzt umsonst. Mir soll's egal sein, ich schau mir noch 'ne Folge Family Guy an und geh dann schlafen...

P.S.: Dann hättest du direkt ne switch-Anweisung machen können. Und über using namespace std lässt sich auch streiten...
-
DarkDagon schrieb:
Das Blöde ist ich mache genrell nie was mit cout weil wir das ned gelernt haben ich weiß ned für was das steht genauso wie cin
Ganz kurz: cout ist für die Ausgabe, cin für die Eingabe. Meine Empfehlung: bring lieber deinen bestehenden Code in Ordnung, das sollte mir den Tipps hier locker zu schaffen sein. Und dann verstehst du auch, was du vermutlich morgen deinem Lehrer zeigst.
Guta Nacht!

-
_matze schrieb:
Eric Cartman schrieb:
// Die C-I/O-Anweisungen habe ich durch die C++-Version ersetzt
Hm, weiß nicht ob das so gut war. Jetzt wird er gar nix mehr verstehen. Na ja, außerdem wird er den Code jetzt sowieso einfach übernehmen und nicht mehr drüber nachdenken. In meinen Augen war die ganze Mühe, ihm die Funktionalität näher zu bringen, jetzt umsonst. Mir soll's egal sein, ich schau mir noch 'ne Folge Family Guy an und geh dann schlafen...

P.S.: Dann hättest du direkt ne switch-Anweisung machen können. Und über using namespace std lässt sich auch streiten...
Hm, ja - haette ich mir sparen koennen. Was bringt ihm Code, den er nicht versteht...
Sorry...
Gruss
Cartman