Finde den Fehler nicht



  • Hallo

    Folgendes Problem:

    Ich schreibe gerade ein Programm das zw. den Zahlensystemen(Oktal, Binär, Dezima, Hex) umrechnet.
    Bisher habe ich den Sourcecode von binär in dezimal schon geschrieben und es funktioniert doch schon beim zweiten Quellcode habe ich probleme:

    //Umrechnen Dezimal ==> Dual
    #include <iostream>
    using namespace std;
    
    void dez_in_bin()
    {
      int dezimal;
      int binar[8];
      int dezimal2 = 1000;
      int i = 7;
      cout << "Geben sie eine Zahl zw. 0 und 255 ein: ";
      cin >> dezimal;
    
      for(int x = 0; x < 8; x++)
      {
          if(dezimal < dezimal2)
          {
            dezimal2 = dezimal / 2;
    
            if(dezimal % 2)
            {
              binar[i] = 1;
            }
    
            else
            {
              binar[i] = 0;
            }
    
          }
    
          if(dezimal2 < dezimal)
          {
            dezimal = dezimal2 / 2;
    
            if(dezimal2 % 2)
            {
              binar[i] = 1;
            }
    
            else
            {
              binar[i] = 0;
            }
    
         }
    
        i--;
      }
    
      for(int j = 0; j < 7; j++)
      {
        cout << binar[j];
      }
    }
    

    ist nicht gerade professionell aber um das geht es, ich will mal den code haben und ihn dann immer weiter "verbessern" wenn ich obrige Funktion ausführe kommt irgendeine riesen Zahl

    ich habe wirklich keine Ahnung mehr was ich machen könnte

    Hoffe ihr könnt mir helfen



  • void dec_to_bin(unsigned int& dec)
    {
    	for (; dec >= 1; dec /= 2)
    		std::cout << dec % 2 << std::endl;
    }
    

    Leicht optimiert 😉

    Hmm find gerade nicht die STL Funktion um einen Vector umzudrehen ... an sonnsten würde ich nämlich an deiner Stelle die ganzen Dinger jetzt in einen std::vector packen und dann umdrehen lassen ... weil ich jetzt nichtmehr von einer bestimmten länge abhängig bin (8 ...) ...



  • danke

    jetzt funktionierts



  • Aja ... damit man dir da nicht einen Fehler durch ne falsch Eingabe verursachen kann:

    void dec_to_bin(void)
    {
    	unsigned int dec = 0;
    	std::cout << "Geben sie bitte die in das Dualsystem umzurechnende Zahl ein: " << std::flush;
    	std::istringstream ss;
    	std::string string_input;
    
    	do {
    		std::getline(std::cin, string_input);
    		ss.clear();
    		ss.str(string_input);
    		ss >> dec;
    	} while (!ss);
    
    	for (; dec >= 1; dec /= 2)
    		std::cout << dec % 2 << std::endl;
    }
    

Anmelden zum Antworten