Werte in Funktionen weitergeben / abrufen.



  • Hallo liebe Gemeinde,

    ich stehe leider etwas auf dem Schlauch. Ich habe eine Übungsaufgabe vor mir und auch die Lösung dazu. Wenn ich mir die Lösung anschaue, verstehe ich aber nicht, wie in dieser Lösung die Multiplikation bzw. zum Quadrat durchgeführt wird.
    Hier ist diese Beispielaufgabe...

    Schreiben Sie eine Funktion quadrat(), die das Quadrat einer Zahl x berechnet. Setzen Sie zum Berechnen aber nicht den Operator * ein, sondern
    rufen Sie in der Funktion quadrat() stattdessen die Funktion produkt()
    aus der Aufgabe 4.4 auf. Schreiben Sie eine passende Hauptfunktion main(),
    um die Funktion zu überprüfen.

    und das hier ist der Code dazu.

    #include <iostream>
    using namespace std;
    int produkt(int x, int y)
    {
    return (x * y);
    }
    
    int quadrat(int x)
    {
    return produkt(x, x);
    }
    
    int main()
    {
    int einVariable1;
    cout << "Geben Sie bitte eine Zahl ein: ";
    cin >> einVariable1;
    cout << "Das Quadrat der Zahl ist: " << quadrat(einVariable1) << '\n';
    return 0;
    }
    

    Ich habe mir das Kapitel jetzt mehrmals angeschaut und irgendwie fällt bei mir der Groschen nicht, wie es denn bei dieser Lösung dazu kommt, dass wirklich das Quadrat der eingegebenen Zahl ausgegeben wird.
    Würde mich mega freuen, wenn mir jemand eine Hilfestellung geben würde, damit ich es endlich schnalle.

    Vielen Dank



  • @modswanted Wie ist denn das Quadrat bzw. eine ganzzahlige positive Potenzen definiert?



  • Bin mir nicht sicher, ob ich deine Frage richtig verstanden habe. Die Zahl, die zum Quadrat gerechnet werden soll, gibt der Benutzer in der Konsole ein, wenn es gestartet wird. Also wird über cin abgefraragt.



  • @modswanted sagte in Werte in Funktionen weitergeben / abrufen.:

    Bin mir nicht sicher, ob ich deine Frage richtig verstanden habe.

    Hast du nicht.

    Wie wird das Quadrat einer Zahl berechnet?



  • @DirkB Genau das ist ja der Punkt. Normalerweise wird z.B. 5x5 gerechnet, somit ist 25 das Quadrat von 5. Aber diesen Vorgang (z.B. x * x) sehe ich nicht in dem Code, da steht nur x * y.
    Daher die Frage, wie diese Funktion trotzdem korrekt ist und funktioniert? Das muss ja irgendwie mit der Weitergabe und Abfrage der Variablen zutun haben... und das schnalle ich irgendwie nicht.


  • Mod

    Welche Werte haben denn x und y, und warum?



  • @SeppJ
    Mehr als das, was der Code hergibt kann ich auch nicht sagen, deshalb habe ich das hier gepostet, weil ich es nicht so ganz verstehe.
    Ich weiß nur, dass das Script so definitiv funktioniert. Habe die Fragestellung mal durch die KI gejagt und die spuckt fast das gleiche raus.

    #include <iostream>
    
    double produkt(double a, double b) {
        return a * b;
    }
    
    double quad(double x) {
        return produkt(x, x);
    }
    
    int main() {
        double zahl = 3.0;
        double zahl_quadrat = quad(zahl);
        std::cout << "Das Quadrat von " << zahl << " ist " << zahl_quadrat << std::endl;
        return 0;
    }
    

    Der einzige "große" Unterschied ist, dass die Zahl hier nicht per Eingabe abgefragt wird, sondern im Code festgelegt ist. Das ist aber nicht das entscheidende. Das entscheidende und für mich somit das Mysterium dieses Codes ist, wie die Rechnung hier zustande kommt, ohne dass ein * Operator genutzt wird.
    Meiner Auffassung nach, findet das in produkt(x, x); statt.
    Frage: Wird eine Zahl multipliziert, wenn sie so (x, x) angegeben wird? Oder was soll diese Schreibweise bewirken? Fragen über Fragen. Bis jetzt kam ich an sich mit dem Lernstoff gut durch aber an diesem Script beiße ich mir momentan die Zähne aus.


  • Mod

    @modswanted sagte in Werte in Funktionen weitergeben / abrufen.:

    @SeppJ
    Mehr als das, was der Code hergibt kann ich auch nicht sagen, deshalb habe ich das hier gepostet, weil ich es nicht so ganz verstehe.

    Die Antworten auf unsere leitenden Fragen sind alle in deinem Code. Dein Code beschreibt das Programm komplett, daher kann man natürlich auch die Frage beantworten, welche Werte x und y haben, die denkt sich der Computer nicht einfach so aus.

    Aber ich merke schon, da fehlen so viele Grundlagen, dass man hier nicht helfen kann, indem man dir einfach die Antwort gibt, du würdest es auch damit nicht verstehen. Die leitenden Fragen waren quasi schon die Antwort, und die hast du auch nicht beantworten können. Du hast nicht einmal gemerkt, dass diese Fragen die Antwort schon enthielten.

    Ich weiß nicht, was ich dir da empfehlen soll. Nochmal komplett von vorne anfangen? Dir scheint ja komplett alles zu fehlen, daher wäre das vermeintlich ein guter Rat. Aber dies ist Stoff aus dem 2. Kapitel? 3.? Wenn du so früh schon komplett abgehängt bist, läuft da irgendetwas anderes falsch bei dir, bei dem ich dir nicht helfen kann.



  • @modswanted sagte in Werte in Funktionen weitergeben / abrufen.:

    produkt(x, x); .... Oder was soll diese Schreibweise bewirken?

    produkt(x, x); ist ein Aufruf der Funktion produkt mit den Werten der Variablen x und x

    Ebenso ist quadrat(einVariable1); ein Aufruf der Funktion quadrat mit dem Wert der Variablen einVariable1

    Funktionen geben einen Wert mit der return-Anweisung zurück, der an der Stelle wo sie aufgerufen werden weiter verwendet wird.

    Falls dich der gleiche Name x in quadrat und produkt irritiert: die haben nichts miteinander zu tun.
    ChatGPT hat ja auch a und b genommen.


Log in to reply