Warum geht das nicht?
-
Hallo
Frage steht oben immer wenn ich die Funktion ausführe kommt 3223434645 oder so egal was ich eingebe
Code:void Umrechner::bin_in_dez() { int dezi[32]; string bin(""); unsigned int ergebnis; double j = 2; cout << "Umrechnung Binaer => Dezimal" << endl << endl; cout << "Geben sie 32 Zahlen zw. 0 ind 1 ein:" << endl << endl; cin >> bin; for(int i=0, x=0; i<32; i++, x++) { dezi[i] = bin[x] * pow(j, i); } ergebnis = dezi[0]+dezi[1]+dezi[2]+dezi[3]+dezi[4]+dezi[5]+dezi[6]+dezi[7]+dezi[8]+dezi[9]+dezi[10]+dezi[11]+dezi[12]+dezi[13]+dezi[14]+dezi[15]+dezi[16]+dezi[17]+dezi[18]+dezi[19]+dezi[20]+dezi[21]+dezi[22]+dezi[23]+dezi[24]+dezi[25]+dezi[26]+dezi[27]+dezi[28]+dezi[29]+dezi[30]+dezi[31]; cout << "Ihre Zahl im Dezimalsystem:" << endl << ergebnis << endl; }Danke schon mal
-
Ich verwende VS 2k5
-
string to int geht nicht ganz so leicht. Schau einmal in die FAQ, "einmal int nach string und zurück"
-
Kannst du mir das zeigen(nicht FAQ sondern Code) ich schaff das nicht bei mir geht das irgendwie nicht
-
Hättest du in die FAQ geschaut, wüsstest du, dass dort sehr aufschlussreiche Beispiele stehen:
#include <sstream> #include <string> #include <iostream> using namespace std; int main() { string AlsString("3.14"); stringstream Str; Str << AlsString; double d; Str >> d; cout << d << endl; }
-
hab ich aber wie dir vllt aufgefallen ist muss/dezi[i] eine zahl stehen und wenn ich dass so mache wie die bsps dann mekert er wnn ich den [] op
-
hmm da sollte ehr sowas wie:
template <typename F, typename T> bool cast_me(const F& src, T& dest) { std::stringstream ss; ss << src; return (!ss >> dest ? false : true); }... nja dual zu dezimal ...
std::size_t bin_to_dec(const std::size_t& num) { std::stringstream ss; ss << num; std::string string_num = ss.str(); std::size_t cur = 0; std::size_t len = string_num.length(); std::size_t num_pos = 0; for (std::size_t pos = 0; pos < len; ++pos) { if (string_num[pos] != '0' && string_num[pos] != '1') return 0; ss.clear(); ss.str(""); ss << string_num[pos]; ss >> num_pos; cur += static_cast<std::size_t>(std::pow(2.0, static_cast<int>((len - 1) - pos)) * num_pos); } return cur; }... ist nicht die beste Lösung aber ganz in Ordnung ... die Variable "len" ist nur um ein wenig Performance zu sparen drin ... kannst auch jedesmal length aufrufen ...
-
aja ... nutzen tut man das dann bsw so:
int main() { std::cout << "Welchen Wert soll die Variable annehmen?" << std::endl; std::istringstream ss; std::string string_input; unsigned int value = 0; do { std::getline(std::cin, string_input); ss.clear(); ss.str(string_input); ss >> value; } while (!ss); std::cout << bin_to_dec(value) << std::endl; }