Komplexe Zahl mit Überladenem >> Operator einlesen
-
folgendes Problem:
ich möchte ein komplexe Zahl zb 1+2j in:
class komplex{ private: double Real; double Imaginär: public: friend istream &operator>>(istream &is, vektor &name); }mit überladenem >>-Operator einlesen.
Das funktioniert auch für 1 als Realteil und 2 als Imagiärteil.
Aber das j wird dabei garnicht beachtet.
gibt es eine mäglichkeit das "j" zb noch in eine char-variable mit einzulesen??Momentan sieht der Einlese-Operator so aus:
istream &operator>>(istream &is, komplex &name){ is >> name.re; is >> name.im; return is; }
-
template <char C> std::istream& Char(std::istream& in) { char c; if( in >> c && c != C ) in.setstate(std::ios_base::failbit); return in; } std::istream& operator>> (std::istream& s, komplex &these) { s >> real; s >> imaginaer; //KEINE umlaute in variablennamen verwenden! s >> Char<'j'>; return s; }jetzt sollte es allerdings noch die Möglichkeit geben, dass man keinen imaginaerteil gibt...
bb
-
Machst Du das zur Übung, oder weil Du komplexe Zahlen brauchst?
Ich frage, weil Du auchstd::complexnehmen könntest.
-
brauche die komplexen zahlen als klasse!
wie das realisiert wird ist mir eigentlich egal!
gibt es denn in complex.h ne funktion die eine komplexe zahl einliest?obwohl es nciht so schlecht wär das j einzeln mit einlesen zu können, da ich das ganze auch noch für brüche brauch und da ja den Bruchstrich mit einlesen muss!
-
@unskilled kannst du mir evtl den teil mal kurz erklären?
[quote="unskilled"]
template <char C> std::istream& Char(std::istream& in) { char c; if( in >> c && c != C ) in.setstate(std::ios_base::failbit); return in; }
-
http://www.cplusplus.com/reference/std/complex/complex/
edit - er liest nen char ein und wenn der gleich dem char C ist (das template argument), dann ist alles ok und wenn nicht, wird das fail-bit gesetzt..
bb
-
HoCiEp3 schrieb:
brauche die komplexen zahlen als klasse!
wie das realisiert wird ist mir eigentlich egal!
gibt es denn in complex.h ne funktion die eine komplexe zahl einliest?obwohl es nciht so schlecht wär das j einzeln mit einlesen zu können, da ich das ganze auch noch für brüche brauch und da ja den Bruchstrich mit einlesen muss!
#include <iostream> #include <fstream> #include <complex> //... std::complex<float> number; std::cin >> number; //oder std::ifstream reader("complex_data.txt"); reader >> number //... std::cout << number;Komplexe Arithmetik beherrscht das Dingen auch.