Hilfe bei verstehen von Anfänger Code 30 Zeile



  • Was ist den das für ein Tutorial?

    Ersetze mal

    #define Startwert 0
    

    durch

    const int Startwert = 0
    

    Das #define sollte man nicht für diesen Zweck verwenden.



  • Mal abgesehen davon, dass der code schlecher Stil ist (defines, formatierung) und nicht das tut, was du willst (integer division in Zeile 17) versteh ich dein Problem nicht 😕
    geschwindigkeit wird in zweile 23 im kopf der vorschleife mit Startwert initialisiert und das e inzeile 16 mit g (was eine kopie von Geschwindigkeit ist) dividiert durch 10.



  • Der Compiler weiß das gar nicht - und dem ist es auch egal. Zur Laufzeit kennt die Funktion den Wert von g, weil er als Parameter übergeben wurde (entspricht dem "geschwindigkeit" im Hauptprogramm), und berechnet den Wert von e selber.

    Aber ansonsten stecken in dem Programm zu viele Fehler, angefangen davon daß die Funktion bremsweg() keinen Wert zurückgibt, über unpassende Typ-Verwendungen bis hin zu den #define's.

    PS: Das nächste mal findest du den Button mit der Aufschrift "C/C++" selber.



  • vorschleife = for-Schleife 😃



  • Könntest du mir das mit dem Parameter noch einmal genauer erklären ?
    So wie ich das sehe wird g durch "double bremsweg(unsigned int g) " definiert und mit "bremsweg" logisch verbunden...
    Doch ich habe auch der Variable Bremsweg keinen Wert zugewiesen...

    Ps: Vielen Dank für die Schnelle Antwort



  • HatteinZiel schrieb:

    Könntest du mir das mit dem Parameter noch einmal genauer erklären ?
    So wie ich das sehe wird g durch "double bremsweg(unsigned int g) " definiert und mit "bremsweg" logisch verbunden...
    Doch ich habe auch der Variable Bremsweg keinen Wert zugewiesen...

    bremsweg ist keine Variable, sondern eine Funktion - die wird im Hauptprogramm im Inneren der Ausgabeanweisung aufgerufen ( bremsweg(geschwindigkeit) ). Dabei wird der gerade gültige Wert von "geschwindigkeit" in den Funktionsparameter g kopiert.



  • Die Defines waren bloß optional ich wollte sie bloß mal ausprobieren, aber danke für die info 😉
    Und ja, ich sollte aus der Division mit 10, eine Division mit 10.0 machen...ok..
    Und ja, der Code ist auch an sich nicht sonderlich leserlich... OK !^^

    Nach mehrmaligem lesen des letzten Kommentars von CStoll habe ich dann alles verstanden 🙂
    Glaub ich zumindestens...

    Zur Verständniskontrolle:
    Der Funktionsparameter "g" bekommt seinen Wert erst wenn ich diesen durch "bremsweg(geschwindigkeit)" am schluss definiere ?
    Das heißt die beiden Zeilen

    "double bremsweg(unsigned int g)"
    und
    "bremsweg(geschwindigkeit)"

    stehen im direkten Zusammenhang ?

    Auf jeden fall mal ! DANKE !



  • HatteinZiel schrieb:

    Zur Verständniskontrolle:
    Der Funktionsparameter "g" bekommt seinen Wert erst wenn ich diesen durch "bremsweg(geschwindigkeit)" am schluss definiere ?
    Das heißt die beiden Zeilen

    "double bremsweg(unsigned int g)"
    und
    "bremsweg(geschwindigkeit)"

    stehen im direkten Zusammenhang ?

    "definieren" ist zwar nicht das richtige Wort dafür, aber im Prinzip ist das so richtig - die erste Zeile ist die Funktionsdefinition, die zweite Zeile der Funktionsaufruf.



  • ok..hmm
    Du sagst definieren sei das falsche Wort, aber eine reine Abfrage des Wertes "Geschwindigkeit" scheint "bremsweg(geschwindigkeit)" ja auch nicht zu sein...
    Immerhin bekommt "g" erst zu diesem Zeitpunkt einen Wert zugewiesen.
    Also ist es eine Definition und Abfrage in einem ?



  • Die richtige Bezeichnung wäre "Funktionsaufruf" oder "Parameterübergabe".
    Definiert wird die Variable (Parameter) "g" im Funktionskopf. Beim Aufruf der Funktion wird ihr dann ein Wert übergeben (in deinem Beispiel aus einer lokalen Variable kopiert).



  • extern int a; //Deklaration
    int a;        //Definition
    int a = 2;    //Definition & Initialisierung
    

Anmelden zum Antworten