Hilfe bei for schleife



  • Hallo leuts

    ich hoffe ihr könnt mir wieder mal helfen.

    ich hab mich mal an nenm kleinen Program gemacht was von einer Dezimal Zahl den Binär-Code ausrechnet und diesen ausgibt. hmmm nach langem fummeln und testen hab ich das sogar hinbekommen, aber der Code wird falsch herum ausgegeben. echt klasse. hat einer eine Idee wie man den Code anders herum ausgeben lassen kann?

    hier ma der skript

    #include <iostream>  
    using namespace std; 
    
    int main()
    {
        int dez, dezi;
    
        cout<<"\nDies ist ein Programm mit dem Sie eine Dezimalzahl in\n"
            <<"einem Binaer Code umwandeln koennen.\n"
            <<"Dafuer muessen Sie eine Dezimalzahl eingeben, aber nur\n"
            <<"Ganze Zahlen, weil der Rest nicht geht.\n"
            <<"\n\nBitte geben Sie nun eine Dezimalzahl ein: ";
        cin>>dez;
        cout<<"\n\n===================================================\n\n\n";
    
        for(int i=dez;i>0;i=i/2)
        {
             dezi=i%2;
             cout<<dezi<<" ";
        }
        cout<<"\nDies ist der Binaer Code moechten Sie noch einen Heximal-Code sehen?";
        cout<<"\n\n\n===================================================\n\n\n";
    
        system("pause");
    }
    

    das mit den Hexal-Code kommt später ich will erstmal den Binär-Code sauber hinbekommen.
    wäre echt geil wenn einer eine Idee hätte

    mfg Kayamoto



  • for (std::size_t i = 0; i > 0; i /= 2)
        std::cout << i % 2 << std::endl;
    

    ... dann von unten lesen 😛
    Oder einfach std::bitset ...



  • das von unten lesen hatte ich och schon 😛
    aber was meinst du jetz mit bitset? ich hab doch keine Ahnung hab doch grad ma angefangen 😕 😃



  • http://www.c-plusplus.net/forum/viewtopic-var-t-is-150106.html

    #include <iostream>  
    #include <limits>
    #include <bitset>
    
    int main()
    {
        std::cout<<"\nDies ist ein Programm mit dem Sie eine Dezimalzahl in\n"
            <<"einem Binaer Code umwandeln koennen.\n"
            <<"Dafuer muessen Sie eine Dezimalzahl eingeben, aber nur\n"
            <<"Ganze Zahlen, weil der Rest nicht geht." << std::endl;
        std::cout <<"\nBitte geben Sie nun eine Dezimalzahl ein: ";
        int dez(0);
        std::cin >> dez;
        std::cout<<"\n\n===================================================\n\n" << std::endl;
        std::cout << std::bitset<std::numeric_limits<int>::digits>(dez) << std::endl;  
        std::cout << "Dies ist die Zahl im Dualsystem. Moechten Sie nun noch die Zahl im 16er(Hex)-System sehen?";
        cout<<"\n\n\n===================================================\n\n" << std::endl;
    
        std::cin.get();
    }
    

    ... 😃



  • arbeite selber nicht mit std aber denke er meint das du die ausgabe formatieren kannst, glaube ich jedenfalls. Der befehl std::bitset wird sicher damit zu tun haben.



  • au backe und mein text sieht sowat von lang und kompliziert aus, ich denke mal das versuche ich, aber ich habe gemerkt das es mit den hex code sehr schwer wird. 😃



  • das std immer zu schreiben mach ich nich ohne funktionierts auch aber man muss och die befehle kennen oder? 😡
    naja jut so klappt es auf jeden fall sehr gut, dann fummel ich mal an die hex rum gibs da auch son befehl wie bitset?

    achso was ich noch fragen wollte wieso hastn du bei

    int dez();
    

    ein array daraus gemacht?

    klappt das sonst nicht?



  • meines wissens ist das kein array sondern müsste einfach nur das sein

    int dez = 0;

    desweiteren in std gibt es auch hex-formatierung das habe ich hier irgendwo in diesem forum gelesen schau mal seite 2 oder so dürfte gleich vorne liegen.



  • aso ja sonst wäre es ja inm den eckigen Klammern

    die seite hab ich nich gefunden, naja ich kug später nochma.

    danke für eure hilfe und bis später



  • int dez(0);
    

    Aufruf des Konstruktors mit Wert 0.



  • (D)Evil schrieb:

    int dez(0);
    

    Aufruf des Konstruktors mit Wert 0.

    Wieso hängen am Anfang so viele Nuller dran ?

    lg



  • nochmal auf Deutsch bitte! 😮



  • sry vertippt. ich meine, wenn ich das programm ausführe, dann bekomme ich als lösung lauter nuller und erst dann die entsprechenden dezimalzahlen.
    zb. gib als dezim... 1 ein und als lösung bekommst du sowas: 0000000000000000000000001



  • Naja guck dir mal das std::bitset-Template an. std::bitset<N>(D) ... N steht für die Anzahl an Bits und D für den Inhalt bzw. D ist ein unsigned long und wird von std::bitset entsprechend bearbeitet ... 😛

    http://www.sgi.com/tech/stl/bitset.html


Log in to reply