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


Anmelden zum Antworten