noob question unsigned
-
Hallo,
ich habe hier ein Problem mit den Vorzeichen.
Um eine negative Zahl in der Eingabe auszuschließen, habe ich unsigned
verwendet. Der Compiler gibt mir aber einen Fehler aus. Weiß wer warum?#include <iostream> #include <cmath> using namespace std; int main(){ unsigned double zahl; cout << "Gib ne Zahl ein" << endl; cin >> zahl; cout << "Die Wurzel aus " << zahl << " beträgt : " << sqrt(zahl) << endl; return 0; }
-
einen Fehler
Und du hältst es nicht für nötig, den Fehlertext zu zeigen?
Es gibt kein unsigned double. unsigned ist immer int.
-
@manni66 sagte in noob question unsigned:
Es gibt kein unsigned double. unsigned ist immer int.
Was ist mit unsigned char ?
Nun zunächst bedeutet "unsigned" ja nur sowas wie "ohne Vorzeichen". Und ursprünglich hieß es auch mal "unsigned int". Der Gedanke ist also nicht so verrückt. Trotzdem gibt es das nicht, da hast du vollkommen recht.
Mein Compiler sagt:
main.cpp|8|error: 'signed' or 'unsigned' invalid for 'zahl'Der Grund wurde genannt.
Nimm einen normalen double und prüfe nach der Eingabe ob die Zahl eventuell negativ ist. Nur weil dein Datentyp "unsigned" ist, also ohne Vorzeichen, heißt das noch nicht, dass "cin" das auch sicherstellt, dass nur positive Zahlen eingegeben werden.
-
@It0101 Danke, dass du es nicht verrückt findest.
Wir sollen ausschließlich double verwenden.
Daran habe ich ach schon gedacht, aber wie prüft man nach der Eingabe?
Wir haben IF übrigens noch nicht eingeführt.Danke
Lou
-
@Lou-Cyphr3 sagte in noob question unsigned:
@It0101 Danke, dass du es nicht verrückt findest.
Wir sollen ausschließlich double verwenden.
Daran habe ich ach schon gedacht, aber wie prüft man nach der Eingabe?
Wir haben IF übrigens noch nicht eingeführt.Danke
LouMach: zahl = abs(zahl);
Dann verschwindet ein eventuell negatives Vorzeichen.
-
das vorzeichen ist tatsächlich weg, allerding gibt es jetzt noch immer "nam"
aus
-
@Lou-Cyphr3 sagte in noob question unsigned:
das vorzeichen ist tatsächlich weg, allerding gibt es jetzt noch immer "nam"
ausDu meinst NAN?
In welcher Zeile denn?
-
Ups, da hab ich mich verlesen.
in Zeile 16.PS: Was bedeutet NAN? Slangsausdruck für non?
PPS: Wo find ich den ne Doku zu der abs() Fnktion?
-
@Lou-Cyphr3 NaN == Not a Number (einfach mal googeln).
int main(){ double zahl; cout << "Gib ne positive Zahl ein\n"; if (!(cin >> zahl) || zahl < 0) { cout << "Ungueltige Eingabe!\n"; return -1; } cout << "Die Wurzel aus " << zahl << " beträgt : " << sqrt(zahl) << '\n'; }
Wo find ich den ne Doku zu der abs() Fnktion?
In google eingeben "std::abs". Gilt für alles aus der Standard Bibliothek.
-
Danke, das ist eine Möglichkeit es zu lösen, wäre da nicht die
noch nicht eingeführte IF- Anweisung.edit: Ich habs jetzt. abs() gehört in den cout strom
Danke an @RBS2 nochmal.
-
@Lou-Cyphr3 sagte in noob question unsigned:
das vorzeichen ist tatsächlich weg, allerding gibt es jetzt noch immer "nam"
ausDas "NAN" entsteht, wenn du versuchst aus einer negativen Zahl eine Wurzel zu ziehen. D.h. du musst vor deiner Operation "sqrt" sicherstellen dass die Zahl >= 0 ist. "abs" ist eine Möglichkeit. Aber vor der Ausgabe nicht im std::cout