eingabe von "unendlich" / inf
-
hi, habe folgendes problem: ich will bei der eingabe von z.B. einem double wert, den wert "inf" / unendlich eingeben. wie mache ich das?
habe schon probiert z.B. u als unendlich zu definieren aber bei der eingabe ist ja u dann kein double wert...bsp:
numeric_limits<double> dbl; double u, inf = dbl.infinity(); u=inf; cout<<" u="<<u<<endl;funktioniert; also u hat den wert "unendlich". ich will jetzt aber mit cin den wert eingeben können...
double e; cout<<endl<< " e = "; cin>>e;aber wie gesagt funktioniert das leider nicht weil u (bei der eingabe) ja kein double wert ist sondern ein char, d.h. ich bekomme in e kein "inf" auch nicht wenn ich "inf" eingebe...
hat jemand eine idee wie ich das lösen kann?
-
spontan würde mir nur einfallen, den Wert als String einzugeben und manuell zu parsen:
double e; cin<<e; if(!cin)//Eingabefehler - keine Zahl { cin.clear() string v; cin<<v; if(v=="#inf") e=numeric_limits<double>::infinity(); }(btw, die Member von numeric_limits sind statisch, also brauchst du davon keine Variablen anzulegen ;))
-
danke jetzt klappts (fast)
mit code (etwas verbessert ;))
double e; cin>>e; if(!cin)//Eingabefehler - keine Zahl { cin.clear(); string v; cin>>v; if(v=="inf") e=numeric_limits<double>::infinity(); }klappt das eingeben von inf und e hat dann der wert "unendlich"; aber mit -inf klappt das noch nicht.
mit:double e; cin>>e; if(!cin)//Eingabefehler - keine Zahl { cin.clear(); string v; cin>>v; if(v=="inf") e=numeric_limits<double>::infinity(); if(v=="-inf") e=(-1)*numeric_limits<double>::infinity(); }kommt für e immer "+inf" raus egal was ich eingebe! (bzw. egal ob ich inf oder -inf eingebe.)