Funktion definieren wenn keine Werte übergeben



  • Moin zusammen,

    habe einige Programmierkenntnisse in C++, jedoch stößt das gerade an meine Grenzen.

    Es geht darum, eine Berechnung ausführen zu lassen. Da der Themenschwerpunkt gerade Präprozessoranweisungen sind, denke ich, dass es mit solchen (teilweise) gelöst werden soll.

    Hintergrund: Es soll eine Berechnung ausgeführt werden. Diese hat feste Übergabeparameter. Wenn diese nicht definiert sind, sollen Standardwerte benutzt werden.

    Die Parameter sollen in der Main definiert werden. Der Funktionsaufruf soll ebenfalls dort erfolgen.

    Was ich bisher habe (nicht viel, da ich mit der Aufgabenstellung nicht viel anfangen kann, da ich noch nie mit Präprozessoranweisungen gearbeitet habe):

    #include <iostream>
    #include <stdio.h>
    
    #define C 0.001256
    #define D 6000
    
    float Berechnung(int A=4, int B=5);
    
    int main()
    {
      int A;
      int B;
    
      cout << "Das Ergebnis beträgt: " << Berechnung(A, B) << endl;
      getchar();
      return 0;
    }
    
    float Berechnung(int A, int B)
    {
      return A + B + C + D;
    }
    

    Mein Verständnis der Aufgabe würde jetzt dahin führen, dass ich in den Präprozessoranweisungen per #ifdef den Fall abfange, dass beim Funktionsaufruf in der main "Berechnung()" keine Parameter übergeben werden. Falls der Fall eintritt, würde ich die Standardwerte (A=4 ; B=5) übergeben lassen. Wenn aber der Funktionsaufruf mit Parametern erfolgt, diese Parameter übergeben werden.

    Bloß wie mache ich das?

    Ich hoffe mir kann geholfen werden.

    Grüße,
    David



  • Nein, so macht das keinen Sinn wie du das geschrieben hast.

    Defaultvalues für Werte sind reiner Syntaxzucker für den Programmierer. Das bedeutet damit, dass sie nur rein syntaktisch da sind.

    Sprich in deinem Fall, dass du A und B nicht initialisierst, aber an die Funktion gibst, damit überschreibst du die Defaultvalues => das hat dir nix gebracht.

    Und mit dem Präprozessor kannst du sowas auch nicht feststellen.

    Zeig doch mal die Aufgabenstellung



  • Schreiben Sie ein Programm in C++ für die Berechnung einer Kennzahl, in dem die Funktion Berechnung() einen Wert vom Typ float zurückgibt und zwei Integer Parameter A und B übernimmt. Wenn kein Argument übergeben wird, sollen die Standardwerte A= 4 und B=5 verwendet werden.

    Der Aufruf der Funktion Berechnung() sowie die Initialisierung der Variablen A=1 und B=2 sollen in der main() Funktion erfolgen.

    Das ist die ganze Aufgabenstellung.



  • #include <iostream>
    #include <stdio.h>
    
    #define C 0.001256
    #define D 6000
    
    float Berechnung(int A=4, int B=5);
    
    int main()
    {
      int A;
      int B;
    
      //cout << "Das Ergebnis beträgt: " << Berechnung(A, B) << endl; 
      //uninitialisierte Werte A und B übergeben erzeugt undefiniertes Verhalten -> Falsch
      A = 1;
      B = 2;
      cout << "Das Ergebnis beträgt: " << Berechnung(A, B) << '\n';
      cout << "Das Ergebnis mit default B beträgt: " << Berechnung(A) << '\n';
      cout << "Das Ergebnis mit default A und B beträgt: " << Berechnung() << '\n';
      getchar();
      //return 0; //unnötig
    }
    
    float Berechnung(int A, int B)
    {
      return A + B + C + D; //warnung: konvertiere von double nach float, daten gehen vielleicht verloren
    }
    

Anmelden zum Antworten