das nachgestellt i
-
@DirkB
ist das gängig?ich wüsste das nur mit einer If Abfrage zu lösen, die war da aber noch nicht eingeführt. Also ich würde es gern mit Operatoren lösen.
-
@Lou-Cyphr3 sorry, war etwas verwirrt.
Du möchtest also bei negativen Zahlen noch ein i mit ausgeben.
Das die Zahl negativ ist, darf aber nicht durch einif
festgestellt werden?
-
So ist es.
Als Beispiel.
#include <iostream> #include <cmath> using namespace std; int main(){ double zahl; cout << "Gib ne Zahl ein\n" << endl; cin >> zahl; cout << "Die Wurzel aus " << (zahl = abs(zahl)) << " beträgt : " << abs(sqrt(zahl)) << endl; return 0; } Bei negativer Eingabe soll die Ausgabe nur durch ein nachgestelltes i unterscheidbar sein.
-
@Lou-Cyphr3 Das ergebnis von
sqrt
ist immer positiv (oder ein Fehler (bei reellen Zahlen)).
Da du zahl schon den Betrag zugewiesen hast, kannst du (wenn du das i ausgeben solltst) nicht mehr feststellen das es negativ war.Du kannst sonst
('i' * (zahl < 0))
ausgeben.
-
wenn ich ('i' * (zahl < 0)) zahl zuweise kommt nan als Ausgabe.
wenn ich es sqrt übergebe stets 0.Aber im Allgemeinen. ist das mit dem i und der negativen Zahl gängig?
-
@Lou-Cyphr3 sagte in das nachgestellt i:
wenn ich ('i' * (zahl < 0)) zahl zuweise kommt nan als Ausgabe.
wenn ich es sqrt übergebe stets 0.Das soll mit cout ausgegeben werden. (da muss zahl aber auch negativ sein können)
Aber im Allgemeinen. ist das mit dem i und der negativen Zahl gängig?
Das i steht für den komplexen Anteil. Und der kommt bei der Quadratwurzel bei negativen Zahlen zum tragen.
-
Ich habe die eigentliche Aufgabe noch nicht richtig verstanden. Du sprichst im Ausgangsposting von einer konjugiert komplexen Zahl. Das bedeutet, dass das Vorzeichen vor dem umgekehrt wird. Wie hängt das nun mit dem Rest der Aufgabe zusammen? Vielleicht ist gemeint, dass sowohl als auch Lösungen der Gleichung sind?
-
Für eine negative Zahl wird das Ergebnis als konjugiert komplexe Zahl ausgegeben, wobei die imaginäre Einheit durch das Zeichen "i" dargestellt wird. Die Funktion sqrt() verarbeitet keine Argumente mit negativem Wert. Für diesen Fall sind daher besondere Vorkehrungen zu treffen.
Meine besondere Vorkehrung war das abs().
-
@Lou-Cyphr3 sagte in das nachgestellt i:
Meine besondere Vorkehrung war das abs().
Dann doch aber innerhalb von
sqrt()
-
mh ja. Aber ändert an der Ausgabe nix.
Ich werd mich morgen nochmal in der Uni erkundigen.
-
@Lou-Cyphr3 dann zeig deinen aktuellen Code.
-
#include <iostream> #include <cmath> using namespace std; int main(){ double zahl; cout << "Gib ne Zahl ein\n" << endl; cin >> zahl; cout << "Die Wurzel aus " << zahl << " beträgt : " << sqrt(abs(zahl)) << endl; return 0; }
-
@Lou-Cyphr3
Naja aber, die Aufgabe lautet doch, dass du auch die Wurzel aus negativen Zahlen ziehen sollst und diese dann entsprechend als imaginäre Zahl darstellen sollst, oder? Wo ist der part in deinem Quelltext?Ich verstehe das so, dass du zwei verschiedene Wege in Abhängigkeit vom Vorzeichen gehen sollst. Was glaube nicht gemeint ist, ist dass du die negativen Zahlen einfach "plattmachst" und so tust als wäre die nicht negativ gewesen.
Die Wurzel aus "-1" ist halt "j". ( Abiturstoff ), d.h. wenn die Zahl negativ ist, passiert folgendes:
zahl = -2;
ergebnis = wurzel( -2 ) = wurzel( 2*j² ) = wurzel(2) * jUnd das müsstest du jetzt mittels "if" oder alternativlösungen auch so darstellen.
Edit: um nicht zu verwirren: das "j" in meiner Welt ist gleichbedeutend mit "i" in deiner Welt
-
@It0101 sagte in das nachgestellt i:
Edit: um nicht zu verwirren: das "j" in meiner Welt ist gleichbedeutend mit "i" in deiner Welt
Das heißt?
i : Standard,
j : ElektrotechnikGut zu wissen
-
@Lou-Cyphr3 wenn du vor das 2. endl noch
('i' * (zahl < 0)) <<
schreibst?
-
Und das müsstest du jetzt mittels "if" oder alternativlösungen auch so darstellen.
if ist noch nicht bekannt. Die Alternativlösung wird hier gesucht.
-
@DirkB sagte in das nachgestellt i:
('i' * (zahl < 0)) <<
also quasi so
<< sqrt(abs(zahl)) << ('i' * (zahl < 0)) << endl;
?
das gibt nicht das richtige Ergebnis aus.
Ich verstehe ehrlich gesagt auch die Formel nicht.
Vllt sollte man es mit "?" lösen?!
Ich hab jetzt an sowas gedacht. Ist ja ein wenig wie eine If-Abfrage.
Aber wie kann ich das 'i' anhängen? So wie unten funktioniert es nicht.(( zahl < 0 )) ? ((sqrt(abs(zahl))) + 'i') : sqrt(abs(zahl))
-
Ich verstehe ehrlich gesagt auch die Formel nicht.
'i' ist ein
int
.( Auf Geräten die mit ASCII arbeiten ist das der Weret 105)
(zahl < 0) ist eine ASudruck, der im Wahrheitsfall 1 ergibt, sonst 0.105 * 1 ist 105, also ein 'i'.
105 * 0 ist 0Vllt sollte man es mit "?" lösen?!
Ach, den
?:
Operator kennst du,if
aber nicht. Hättest du mal früher schreiben sollen.
cout << (( zahl < 0 ) ? "i" : "") << endl;
sollte gehen
-
Ja es war quasi der letzte Punkt vor den Kontrollstrukturen.
Obwohl das ja irgendwie auch eine ist zählt das im Kurs noch zu Operatoren .Aber danke. Läuft jetzt!
-
Ich glaube, ich verstehe die Lehrer heutzutage nicht... Wie kann man "if" als letztes durchnehmen, stattdessen aber den völlig unbedeutenden ternären Operator viel früher?
Sobald man das "if" vermittelt hat, kann man wenigstens ein paar gescheite Aufgaben verteilen.