Binär- ins Dezimalsystem
-
hoi ich versuche einen Programm zu erstellen das, das Binärsystem ins Dez.System umwandelt. Zurzeit ist es für 3 zahlen gedacht möchte es später aber auf 16 stellen verlängern.Mein problem ist es aber das es irgend ein ergebnis ausgibt und nicht das was ich denke

#include <iostream> using namespace std; int main() { int ergebnis = 0,ergebnis1=0, endergebnis; int feld[2]; for (int index = 0;index < 2; index++) { cout<<" Bitte zahl "<<index+1<<" eingeben"; cin>>feld[index];} ergebnis= feld[0] * 1; endergebnis=ergebnis+ergebnis1; ergebnis= feld[1] * 2; endergebnis=ergebnis+ergebnis1; ergebnis= feld[2] * 4; endergebnis=ergebnis+ergebnis1; cout<<endergebnis; return 0; }Freue mich auf einen guten ratschlag oder tips,aber natürlich auch über elegantere lösungen als meine,Danke im voraus

-
chichox schrieb:
#include <iostream> using namespace std; int main() { int ergebnis = 0,ergebnis1=0, endergebnis; int feld[2]; for (int index = 0;index < 2; index++) { // Diese Klammer weg. cout<<" Bitte zahl "<<index+1<<" eingeben"; cin>>feld[index];} ergebnis= feld[0] * 1; endergebnis=ergebnis+ergebnis1; ergebnis= feld[1] * 2; endergebnis=ergebnis+ergebnis1; ergebnis= feld[2] * 4; endergebnis=ergebnis+ergebnis1; cout<<endergebnis; return 0; }Edit: Elegantere Lösung?
#include <bitset> #include <iostream> #include <string> int main() { std::cout << "Bitte Bits eingeben: "; std::string str; std::cin >> str; std::bitset<16> bits(str); std::cout << "Als Zahl: " << bits.to_ulong() << '\n'; }
-
[quote="Nathan"][quote="chichox"] [code="cpp"]#include <iostream> using namespace std; int main() { int ergebnis = 0,ergebnis1=0, endergebnis; int feld[2]; for (int index = 0;index < 2; index++) cout<<" Bitte zahl "<<index+1<<" eingeben"; cin>>feld[index]; ergebnis= feld[0] * 1; endergebnis=ergebnis+ergebnis1; ergebnis= feld[1] * 2; endergebnis=ergebnis+ergebnis1; ergebnis= feld[2] * 4; endergebnis=ergebnis+ergebnis1; cout<<endergebnis; return 0; }so gibt er mir eine fehlermeldung :S
-
Die wäre..?
-
Die Klammer hat schon gepasst. Du hast bloß die schließende übersehen, die durch die furchtbare Formatierung untergegangen ist.
-
Bin ich blind oder wird ergebnis1 nie verändert?
-
EOP schrieb:
Bin ich blind oder wird ergebnis1 nie verändert?
Ergebnis1 dient mir zum rechnen.. wen du eine bessere möglichkeit siest nur her damit

-
chichox schrieb:
EOP schrieb:
Bin ich blind oder wird ergebnis1 nie verändert?
Ergebnis1 dient mir zum rechnen.. wen du eine bessere möglichkeit siest nur her damit

So wie du es derzeit benutzt, kannst du es so abkürzen:
endergebnis=ergebnis+ergebnis1; // wird zu endergebnis=ergebnis+0;Ich weiß nicht, ob man das noch weiter vereinfachen kann. Musst du mal einen Mathematiker fragen.
-
chichox schrieb:
Ergebnis1 dient mir zum rechnen..
Naja, 0 zu etwas addieren ändert das etwas nicht. Dazu brauche ich nicht rechnen ...
-
hahaa gott manchmal mache ich auch blödes zeug xD naja
hab jetz alle int variablen gelöscht und nochmal ein feld gleicher gröse gemacht und so zugewiesen:sumand[0]= feld[0] * 1;in der hofnung ich wüste wie ich dan
sumand[0] sumand[1] sumand[2]subtrahieren kann, hat mir jemand einen guten tipp?
-
Ansonsten greifst Du mit
feld[2]eins hinter das Array...
Und eine andere Möglichkeit wärestrtol()aus0<cstdlib>.#include <iostream> #include <string> #include <cstdlib> int main(){ std::string s; std::cin>>s; char* endptr; long lval = std::strtol(s.c_str(), &endptr, 2); if(s.size()>0 && *endptr=='\0') std::cout << lval << '\n'; }