Dualzahl in dezimalzahl
-
Danke für deine Antwort, aber ich weiß nicht wie man unsigned int einsetzt und wie es dann aussieht. Könntest du mir das bitte noch schreiben?
-
"unsigned" heisst einfach, dass da das vorzeichen nicht beachtet wird, dass also nur positive zahlen dargestellt werden können, und negative zahlen brauchst du wahrscheinlich nicht...
-
hmm also das mit den Enter könntest du so regeln:
du stellst di frage: " Was möchten sie tun? (1)In der Nase bohren; (2) Nichts!"
dann deklarierst du eine int variable( int vote = 0 ), anschliessend machst du eine do while schleife
int vote = 0; bool is voting = false; do { voting = true; if( kbhit() ) { // wurde die tastatur benutzt vote = getch() // die vote var bekommt den tastencode der ausgelöst wurde switch( vote ) { // mit einer switch-case machst du eine // fallunterscheidung, dadurch ist es dir möglich nur // auf bestimmte tasten zu reagieren case '1': { //tu was; voting = false; break; } case '2': { //tu was; voting = false; break; } default: { cout << "Benutze die Ziffern 1 und 2 zum voten!"; voting = true; } } } }soviel zu deinem enter problem.
Gruß Tobi.
-
Danke, aber das wollte ich eigentlich nicht wissen, hab es trotzdem mit eingebaut im Programm.
-
Wolframm schrieb:
Danke für deine Antwort, aber ich weiß nicht wie man unsigned int einsetzt und wie es dann aussieht. Könntest du mir das bitte noch schreiben?
Na so:
unsigned int Zahl; std::cin >> Zahl; //jetzt hast in Zahl vllt. so was: 1011 //jetzt zerlegst die zahl in die einzelen stellen prüfst ob nur einsen und nullen vokommen und wertest es ausmfg tobZel
-
Genau das ist mein größtes Problem. Wie zerlege ich dann die Zahl, so das ich diese wieder in Arrays speichern kann?
-
Andrey schrieb:
dann mach es nicht ziffer für ziffer, sondern als ein unsigned int, und zwar in beiden fällen...
besser die binärzahl als string...
#include <iostream> #include <string> using namespace std; unsigned long binary_to_number (string &binary) { unsigned long n = 0; for (size_t s=0; s<binary.length(); s++) n = (n<<1) + binary[s]-'0'; return n; } int main() { string in; cin >> in; cout << binary_to_number (in) << endl; }
-
Danke, das funktioniert also schonmal, aber jetzt muss ich erstmal verstehen was du da geschrieben hast :D.
Danke nochmals an alle für die Unterstützung.
-
Wolframm schrieb:
Danke, das funktioniert also schonmal, aber jetzt muss ich erstmal verstehen was du da geschrieben hast :D.
erst wird der vorherige wert 1 nach links geschoben (entspricht einer multiplikation mit 2, weil links die höchste stelle ist, muss auch so oft mit 2 multipliziert werden), dann wird das zeichen '0' oder '1' aus dem string dazu addiert. damit aus dem zeichen '0' oder '1' der zahlenwerte 0 oder 1 werden, muss man '0' abziehen. das ganze wird so oft gemacht, wie viele zeichen im string sind.
der string darf übrigens nur aus nullen und einsen bestehen...

-
Wie wär's damit:
#include <iostream> #include <bitset> int main () { std::bitset<32> myBitset; std::cout << "Bitte dualzahl eingeben(max. 32 Stellen): "; std::cin >> myBitset; std::cout << "Dezimalzahl ist: " << std::dec << myBitset.to_ulong() << std::endl; }