das nachgestellt i



  • Hallo,

    Das Ergebnis bei der Eingabe einer negativen Zahl soll als
    konjugiert komplexe Zahl ausgegeben werden. sprich, bei Eingabe einer negativen Zahl soll ein i nachgestellt werden hab aber keine Idee
    zur Umsetzung.

    Hat wer ein paar Worte?

    Danke
    Lou



  • @Lou-Cyphr3 nach der Zahl noch ein Zeichen einlesen.



  • @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 ein if 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 ii umgekehrt wird. Wie hängt das nun mit dem Rest der Aufgabe zusammen? Vielleicht ist gemeint, dass sowohl ii als auch i-i Lösungen der Gleichung x2=1x^2=-1 sind?



  • @wob

    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.



  • @DirkB

    #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) * j

    Und 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 : Elektrotechnik

    Gut zu wissen 😎



  • @Lou-Cyphr3 wenn du vor das 2. endl noch ('i' * (zahl < 0)) << schreibst?



  • @It0101

    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))
    


  • @Lou-Cyphr3

    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 0

    Vllt 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


Log in to reply