Übungsaufgabe funtkionsaufrufe



  • Hallo,

    ich verstehe folgende Aufgabe nicht so ganz:

    Definieren Sie eine Funktion, welche die Seitenlängen eines Quaders übergeben
    bekommt und das Volumen des Quaders zurück gibt. Integrieren Sie den
    Funktionsaufruf in die nachfolgende Anwendung. Geben Sie das Ergebnis auf dem
    Bildschirm aus.
    //Zweck: Berechnung des Quadervolumens
    #include <iostream>
    using namespace std;
    int main (void){
    double a, b, c;
    cout << "Gib die Seitenlaengen eines Quaders: ";
    }

    ich habe mal folgendes Programm versucht:

    //Zweck: berechnung des Quadervolumens
    #include <iostream>
    using namespace std;
    
    void quader();
    
    int main()
    {
    	double a, b, c;
    	cout << "Gib die Seitenlaengen ein: ";
    	quader();
    
    	return 0;
    }
    
    void quader()
    {	
    	cin << a;
    	cin << b;
    	cin << c;
    	cout << "Das Volumen betraegt: " << a*b*c;
    }
    

    Könnte mir vielleicht jemand meinen Denkfehler erklären.... und sagen wie ichs besser mache? 🙄



  • Laut Aufgabe soll die Funktion die Längen übergeben bekommen (Stichwort: Parameter) und das Ergebnis zurückgeben (Stichwort: return). Das heißt, die Ein- und Ausgabe gehört in die main().

    (btw, in der Funktion quader() sind die Variablen der main()-Funktion überhaupt nicht bekannt)



  • Hm...

    ja das hat mich ja auch gewundert @ nicht bekannt.

    ich hatte fdie aufgabenstellung so verstanden, als dass ich die main nur um den Funtkionsaufruf erweitern darf?

    hm... ich würde es jetzt so abändern:

    #include <iostream>
    using namespace std;
    
    double quader(double a, double b, double c);
    
    int main()
    {
    	double a, b, c;
    	cout << "Gib die Seitenlaengen ein: ";
    	cin >> a;
    	cin >> b;
    	cin >> c;
    	quader(a, b, c);
    
    	system("Pause");
    	// return 0;
    }
    
    double quader(double a, double b, double c)
    {	
    
    	double volume = a*b*c;
    
    	return volume;
    }
    

    bekomme dann aber volume nicht zurückgegeben bzw kein ergebnis? Ich bin wohl zu doof 😞



  • Du solltest das Ergebnis auch zuweisen.

    double ergebnis=quader(a,b,c);
    //tu was mit ergebnis
    
    //oder, falls nur ausgabe:
    cout<<quader(a,b,c);
    

    EDIT: Erklärung: "return" gibt den Wert zuürck, der dahinter steht und springt dann an die Programmstelle und tut so als hätte dieser Wert direkt da gestanden (quasi)



  • also wäre es so korrekt?

    #include <iostream>
    using namespace std;
    
    double quader(double a, double b, double c);
    
    int main()
    {
    	double a, b, c;
    	cout << "Gib die Seitenlaengen ein: ";
    	cin >> a;
    	cin >> b;
    	cin >> c;
    	quader(a, b, c);
    
    	system("Pause");
    	// return 0;
    }
    
    double quader(double a, double b, double c)
    {	
    
    	double volume = a*b*c;
    	cout << "Das Volumen betraegt: " << volume;
    
    	return 0;	
    }
    

    sind da noch gröbere Fehler drin? also falsche definitonen oder ähnliches?



  • syntaktisch ist das programm korrekt. aber es entspricht immer noch nicht den forderungen der aufgabe.

    die funktion quader soll das volumen zurückliefern, was sie nicht macht.

    ausserdem gibt die funktion quader bereits das ergebnis aus. dies soll aber in der main geschehen.



  • hm sorry bin überfordert? Wie muss es denn dann aussehen? 😕



  • #include <iostream>
    using namespace std;
    
    double quader(double a, double b, double c);
    
    int main()
    {
        double a, b, c;
        cout << "Gib die Seitenlaengen ein: ";
        cin >> a;
        cin >> b;
        cin >> c;
        // quader(a, b, c);
        cout << "Das Volumen betraegt: " << quader(a, b, c); // rückgabewert von quader für die ausgabe nutzen
    
        system("Pause");
        // return 0;
    }
    
    double quader(double a, double b, double c)
    {   
    
        double volume = a*b*c;
        // cout << "Das Volumen betraegt: " << volume;
        // ausgabe in der main
    
        //return 0;   
        return volume; // volumen "zurückliefern"
    }
    


  • da bekomme ich die Fehlermeludng

    "Lokale Funktionsdefinitionen sind unzulässig"



  • dann zeig nochmal deinen code...



  • -.- vergiss es hab selber nu gesehen das } fehlte -.- sorry


Anmelden zum Antworten