C++ Funktionen + ist die Lösung richtig?



  • Tag, ich besuche eine Berufsschule zweig Fachabitur Richtung Informationstechnik(seit einem Jahr).
    Unser IT Lehrer hat C++-Funktionen behandelt während ich Krank war und gab uns eine Aufgabe, mit einem Handout des Lehrers habe ich mir den Anfang des Themas erarbeitet und versucht die Aufgabe zu lösen.

    Aufgabe:
    Schreibe eine C(++)-Funktion. Diese übernimmt als Parameter eine reelle Zahl x und gibt nach der Funktionsbearbeitung als Wert true für den Fall x≥0 zurück und ansonsten false.

    Lösung:

    #include <iostream.h>
    string trueFalse(float wert)
    {
      string a="true";
      string b="false";
      if (wert>=0) return a;
      else return b;
    };
    void main()
    {
      float x; 
      cout<<"Bitte gib X ein: "; cin>>x;
      cout<<trueFalse(x);
      getchar(); 
    };
    

    Meine Frage wäre nun, gibt es an meiner Lösung etwas auszusetzen? Kann man sie mit einfachen Mittel besser Lösen? (bedenkt bitte ich bin Anfänger)



  • Wieso Strings? true (ohne Anführungszeichen, wie in der Aufgabenstellung) ist ein bool. Und das macht auch inhaltlich deutlich mehr Sinn.



  • Vermutlich sollst du keinen String zurückgeben, sondern eine bool-Wert.

    In etwa so:

    bool is_positive_or_zero(double x)
    {
        if(x >= 0.0)
            return true;
    
        else
            return false;
    }
    

    Das kann man aber auch noch kürzer schreiben:

    bool is_positive_or_zero(double x)
    {
        return x >= 0.0;
    }
    

    Es heißt übrigens "int main()", und du musst nach Funktionen kein Semikolon setzen. Die Datei heißt <iostream> ohne das .h



  • 314159265358979 schrieb:

    bool is_positive_or_zero(double x)
    {
        if(x >= 0.0)
            return true;
    
        else
            return false;
    }
    

    Den else Zweig würd ich weglassen, oder ist es mit else Zweig ein besserer Stil?



  • Und es heißt nur <iostream>, <iostream.h> ist kein C++



  • Mit true/false meinte dein Lehrer bestimmt den bool-Datentyp. Einen Compiler hast du aber schon oder? Wenn ja, dann setz den auch ein, denn dieser Code ist alles andere als compilierbar.

    Kritikpunkte:
    1. #include <iostream.h> muss
    #include <iostream> heißen
    2. #include <string> fehlt
    3. std:: vor string und cout fehlt.
    4. Den Datentyp des Funktionsrückgabewertes auf bool ändern (natürlich auch a und b)
    5. Es heißt int main()
    6. Semikolon nach den schließenden geschweiften Funktionsklammern muss weg.

    Es würde mich sehr interessieren, wie die Unterlagen deines Lehrers aussehen...



  • [Rewind] schrieb:

    6. Semikolon nach den schließenden geschweiften Funktionsklammern muss weg.

    Ich meine mich erinnern zu können, dass es sowas wie eine leere Deklaration gibt. Komisch ist's aber dennoch.



  • Es ist einfach nur eine leere Anweisung, die absolut nichts macht und somit im Code nichts zu suchen hat.



  • Mit anderen Worten: Sie ist genauso unnötig und irreführend wie dein else.



  • An dem else ist nichts irreführend, wie du siehst hat er's auch so gemacht.


Anmelden zum Antworten