Problem mit string



  • hallo,

    ich versuche eine zahl immer durch 10 zu teilen und sie dann als string einzulesen, jedoch wird die zahl nach 6 oder 7 schritten als 1 eingelesen obwohl mir cout was anderes sagt. was mache ich falsch? 😕

    // programm2.cc
    #include <sstream> 
    #include <string> 
    #include <iostream>
    int main ()
    {
        double x(1);
        std::string S("0.001");
        std::string u("0.1");
        int I(1);
        std::cout.precision( 17 );
        while(I!=20)
        {
                    I=I+1;
                    x=x*0.1;
                    std::ostringstream Str2;
                    Str2 << x+1;
                    std::string S(Str2.str());
                    std::cout << "S(nachher)=" << S << std::endl;
                    int L=S.length();
                    std::cout << "Lange=" << S.length() << " x+1=" << x+1 << "     I=" << I << " L=" << L << std::endl << std::endl;
                    }
        std::cout << "Beendet " << "x+1=" << x+1 << u << std::endl;
    
    }
    


  • Du brauchst den .precision -Aufruf auch auf Str2 bevor Du x+1 in den Stringstream reinschreibst.



  • wie füge ich den ein? ich versteh was du meinst, kanns aber nicht umsetzen 😕



  • TGGC schrieb:

    cppnewb schrieb:

    wie füge ich den ein? ich versteh was du meinst, kanns aber nicht umsetzen 😕

    In das *.cpp eintippen. f'`8k

    Gruß, TGGC (Was Gamestar sagt...)

    schon klar, aber was? was muss ich for .precision schreiben? mit cout klappts nicht...



  • cppnewb schrieb:

    TGGC schrieb:

    cppnewb schrieb:

    wie füge ich den ein? ich versteh was du meinst, kanns aber nicht umsetzen 😕

    In das *.cpp eintippen. f'`8k

    Gruß, TGGC (Was Gamestar sagt...)

    schon klar, aber was? was muss ich for .precision schreiben? mit cout klappts nicht...

    doch, es klappt mit cout.
    rtfm: http://www.cplusplus.com/reference/iostream/ios_base/precision/

    bb



  • // programm2.cc
    #include <sstream> 
    #include <string> 
    #include <iostream>
    #include <iomanip>
    #include<ios>
    int main ()
    {
        double x(1);
        std::string S("0.001");
        std::string u("0.1");
        int I(1);
        std::cout.precision( 20 );
        std::setprecision(20);
        while(I!=20)
        {
                    I=I+1;
                    x=x*0.1;
                    std::setprecision(20);
                    std::cout.precision(20);
                    std::ostringstream Str2;
                    Str2 << x+1 << std::setprecision(20);
                    std::string S(Str2.str());
                    int L=S.length();
                    if(x+1==1){
                              std::cout << "Fertig! mit x=" << x << std::endl;
                              }
    
                    std::cout << "S(nachher)=" << S << std::endl;
                    std::cout << "Lange=" << S.length() << " x+1=" << x+1 << "     I=" << I << " L=" << L << std::endl << std::endl;
                    }
        std::cout << "Beendet " << "x+1=" << x+1 << std::endl;
    
    }
    

    nö klappt immer noch nicht. nach dem 7. durchlauf spuckt er mir als Länge des strings 1 aus...



  • xD
    rtfm!!!!!

    #include <sstream>
    #include <string>
    #include <iostream>
    #include <iomanip>
    
    int main()
    {
        double x = 1;
        std::cout.precision(20);
    
    	for(int i = 1; i != 30; ++i)
        {
            x /= 10;
            if(x == 0)
    			break;
    
            std::ostringstream ss;
            ss << std::setprecision(20) << x+1;
            std::string S(ss.str());
    
            std::cout <<
    			"S =    \t" << S << std::endl <<
    			"\tLaenge=\t" << S.length() << std::endl <<
    			"\tx+1 = \t" << x+1 << std::endl <<
    			"\ti =   \t" << i << std::endl <<
    			std::endl <<
    			std::endl;
    	}
        std::cout << "Beendet " << "x+1=" << x+1 << std::endl;
    }
    

    geht nicht?

    bb



  • nicht aufregen, bin mit der syntax von c++ noch nicht vertraut :p
    danke klappt jetzt 🙂



  • cppnewb schrieb:

    nicht aufregen, bin mit der syntax von c++ noch nicht vertraut

    da waren noch ganz andere schnitzer drin als nur syntaktische...


Anmelden zum Antworten