Hilfe: Funktion in Funktion aufrufen wie? / Einfaches Kurzprojekt
-
Ich mache ja nichts im Vorraus, genau diese Aufgabe ist jetzt dran und in der nächsten Lektion geht es mit scope weiter.
Ja logisch weiß ich das. Return 0 heißt gebe nichts aus. Steht ja auch in Main() immer am Ende. Nur leider gibt es bei mir jetzt eine 0 aus, anstatt nichts.
return a + b gibt natürlich das Ergebnis der addierten eingegebenen a und b Werte aus. Wie schon erwähnt hatte ich dies schon mal fertig gemacht, aber wieder verworfen da in der nächsten Zeile ein return a - b zum Fehler führte.
Aufgrund der vielfältigen Versuche und das nichts wirklich so funktioniert hat, wie es sollte, mit der Funktion in der Funktion, bin ich nun auch auf Lösungssuche, abseits der bisher gelernten Regeln. (Aber nur mit den bisher gelernten Befehlen)
-
deine aufgabe hat mir keine logik. du schreibst zweimal die selbe funktion addition und alle machen das selbe. hie ist ein beispiel:
float addition(float a, float b) { return a+b; } float subtraktion(float a, float b) { return a-b; } int main() { float a=4, b=23.2; cout << "ADD: " << addition(a,b) << endl; cout << "SUB: " << subtraktion(a,b) << endl; // oder cout << "funk in funk: " << addition(addition(a,b),subtraktion(a,b)) << endl; return 0; }by the way: return 0 heisst nicht gebe nichts aus sondern gebe 0 zurück, dass heisst dass die funktion irgendeinen wert zurückliefert.
-
Also ich sollte in der ersten Aufgabe ein Programm schreiben, mit den 4 Grundrechenarten. Ich habe es hier mal verkürzt wiedergegeben, weil das funktioniert ja einwanfrei. In der nächsten Ausgabe soll ich dieses Programm so erweitern, dass mit einer zusätzlichen Funktion alle Rechenarten mit Ergebnis auf einmal ausgegeben werden.
-
Suseplus schrieb:
Also ich sollte in der ersten Aufgabe ein Programm schreiben, mit den 4 Grundrechenarten. Ich habe es hier mal verkürzt wiedergegeben, weil das funktioniert ja einwanfrei. In der nächsten Ausgabe soll ich dieses Programm so erweitern, dass mit einer zusätzlichen Funktion alle Rechenarten mit Ergebnis auf einmal ausgegeben werden.
deklariere 2 globale vars,anschl.übergibst du die ergebnisse den globalen vars.mit der letzten funktion definierst du die ausgabe,also die ausgabe der 2 globalen vars.
müßte so klappen...
-
#include <iostream> using namespace std; float addition(float a, float b) { return (a + b); } float subtraktion1(float a, float b) { return (a - b); } void alle(float a, float b) { cout <<"Das Ergebnis der Addition lautet: " << addition(a,b) <<endl; } int main(){ float a; float b; char Auswahl; cout <<"Bitte geben Sie den Wert a ein: "; cin >> a; cout <<"Bitte geben Sie den Wert b ein: "; cin >> b; cout <<'\n'; cout <<"Bitte wählen Sie nun die Art der Rechenoperation:"<<endl; cout <<"a Addition a + b"<<endl; cout <<"b Subtraktion_1 a - b"<<endl; cout <<"c Alle Rechenoperationen"<<endl; cout <<'\n'; cout <<"Bitte treffen Sie Ihre Auswahl: "; cin >>Auswahl; switch(Auswahl) { case 'a': cout <<"Das Ergebnis von "<<a <<" + "<<b <<" lautet: "<<addition(a,b)<<endl; break; case 'b': cout <<"Das Ergebnis von "<<a <<" - "<<b <<" lautet: "<<subtraktion1(a,b)<<endl; break; case 'c': alle(a,b); break; } return 0; }Probiers mal so.
-
Deathwachters Code funktioniert nun sauber ohne Fehler und der Ausgabe unnützer Zeichen.
Danke Danke Danke
-
Und dann vergleiche mal bitte seinen und deinen Code.
Dann werden dir die Fehler schon auffallen!
-
Es ist eine Frage der Kombination der Codeteile.
Einzeln hatte ich es schon öfter so, aber oben und unten hatte ich aufeinmal anscheinbar nie diese Code gehabt.
Letztenendes war das wichtigste nun wohl doch der Verzicht auf das cout unten und der Aufrauf einfach nur mit alle(a,b);
-
Demach weißt du also noch nicht so genau was "cout" macht, oder?
-
Na cout steht für die Ausgabe von dem Nachfolgenden Text/Variablen. Sicher gibt es natürlich wieder noch eine genauere Definition und Sonderregeln.
-
Suseplus schrieb:
Na cout steht für die Ausgabe von dem Nachfolgenden Text/Variablen.
Okay.
Und jetzt überlege dir wieso Folgendes nicht geht:
void add(int a, int b) { cout<<a+b<<endl; } ... int main() { ... cout<<add(12,2); ... }
-
Ich vermute mal, das der Compiler es nicht rafft, einen doppelten cout Befehl abzuarbeiten.
-
...
Ich glaube eher dass du das nicht raffst!