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ßtint 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.