binär->dezimal
-
Erstmal int c; durch char c; ersetzen und cin.get(c) = bin[i] weg.
-
K, dann sieht das ja so aus:
#include <iostream>
#include <cmath>
using namespace std;int main()
{
int bin;
int dez = 0;
char c;cout << "Bitte eine Binaer-Zahl eingeben" << endl;
cin >> bin;{int i = 0;i < bin;i++;}
while (cin.get(c) && ( c == '0' || c == '1'))
{dez *= 2;
dez += c - '0';}
cout << dez << endl;
system("pause");
return 0;
}Doch irgendwas stimmt da ja immer noch nicht.Krieg immer bei jeder Angabe 0 raus.Hmm andere Vorschläge?
-
Zum Beispiel so:
int main() { char bin[256]={0}; int dez = 0; cout << "Bitte eine Binaer-Zahl eingeben" << endl; cin >> bin; for(int i=0;i<strlen(bin);i++) { if(bin[i]!='0' && bin[i]!='1') { bin[i]=0; break; } dez *= 2; dez += bin[i] - '0'; } cout << dez << endl; system("pause"); return 0; }
-
Bumsfidel schrieb:
...
Grundsätzlich würde ich dich bitten mal unterhalb des Eingabefensters die C/C++ Tags ausfindig zu machen, und deinen Code dort einzufügen. Macht das ganze deutlich lesbarer.
-
Das {int i = 0;i < bin;i++;} sollte wohl eine For-Schleife werden:
for(int i = 0; i < bin; i++)
-
Naja nee, das sollte zu der while schleife gehören.
while (cin.get(c) && ( c == '0' || c == '1'))
diese Zeile soll ich ja verwenden.
-
#include <iostream> #include <cmath> using namespace std; int main() { int dez = 0; char c; cout << "Bitte eine Binaer-Zahl eingeben" << endl; cin >> c; {int i = 0;i < strlen(c);i++; while (cin.get(c) && ( c == '0' || c == '1')) { c = 0; dez *= 2; dez += c - '0'; } } cout << dez << endl; system("pause"); return 0; }So habe das jetzt umgeändert.Bekomme aber immernoch einen Fehler angezeigt,
nämlich "invalid conversion from char to const char"
Jemand eine idee?
-
#include <iostream> #include <cmath> using namespace std; int main() { int dez = 0; char c; // ein Zeichen cout << "Bitte eine Binaer-Zahl eingeben" << endl; cin >> c; // EIN Zeichen {int i = 0;i < strlen(c);i++; // strlen(char)? Was soll das sein? // i wird nirgends verwendet, wozu? // hier liest du wieder neu in c ein, wozu der ganze kram davor? while (cin.get(c) && ( c == '0' || c == '1')) { c = 0; // was soll das? dez *= 2; dez += c - '0'; } } cout << dez << endl; system("pause"); return 0; }
-
1. Wenn dein Compiler einen Fehler auspuckt, dann sieh nach, wo der Fehler auftritt (da steht immer ne Zeile bei!) und lies dir den Text nochmal genau durch. Und dann musst du eigentlich nur noch den Zusammenhang zwischen beidem finden. Btw, ich bin sicher, er hat gesagt "invalid conversion from char to const char*****", richtig? Er kann also ein Zeichen nicht zu einer Zeichenkette konvertieren...
2. Was soll das hier?
{int i = 0;i < strlen(c);i++;Das ist der unvollständige Kopf einer for-Schleife, den du (ganz zerstückelt) hartnäckig im Code stehen lässt! Das ist mehr als sinnlos. Selbst wenn du die strlen-Sache kompilieren könntest, wäre das ein Vergleich, dessen Ergebnis gar nicht ausgewertet wird. Er steht einfach alleine im Code rum. Zulässg, aber sinnlos. Du kannst auch "1<2;" in deinen Code schreiben, das bringt genauso viel. Zudem du mit den geschweiften Klammern auch noch die Lebensdauer von Variablen beeinflusst, wahrscheinlich ohne sich dessen bewusst zu sein.
3. Tipp: Du willst doch eine mehrstellige, binäre Zahl einlesen, richtig? Dann musst du einen String (char*), kein einzelnes Zeichen (char) einlesen. Sieh dir mein Beispiel nochmal an. Das mag vielleicht nicht ganz auf deine Aufgabenstellung passen, ein paar Sachen solltest du dennoch übernehmen (Stichwort: bin).
-
Ok, Tipp 3 war Mumpitz, wenn man sich die Aufgabenstellung nochmal ansieht. So sollte es passen:
int main() { char bin[256]={0}; int dez = 0; char c; cout << "Bitte eine Binaer-Zahl eingeben" << endl; while(cin.get(c) && ( c == '0' || c == '1')) { dez *= 2; dez += c - '0'; while((c = fgetc(stdin) != '\n') && c != EOF); //Eingabepuffer leeren } cout << dez << endl; system("pause"); return 0; }
-
Aja,vielen dank für die Tips,
obwohl ich wenn ich dies drin lasse:
while((c = fgetc(stdin) != '\n') && c != EOF);
irgendwie ich nichts mehr rausbekomme.
Habe aber noch eine Frage:
was bedeutet die 256 in den Klammern hinter bin?
-
Grundlagen... Grundlagen mein Lieber!
-
Bumsfidel schrieb:
obwohl ich wenn ich dies drin lasse:
while((c = fgetc(stdin) != '\n') && c != EOF);
irgendwie ich nichts mehr rausbekomme.Glaub' ich nicht...
Bumsfidel schrieb:
was bedeutet die 256 in den Klammern hinter bin?
Bitte zieh dir mal ein gutes Buch/Tutorial 'rein. Das sind sowas von grundlegende Grundlagen, die solltest du kennen, bevor du auch nur daran denkst, ein noch so kleines Programm zu schreiben. Stichwörter für den konkreten Fall: Datentypen, String, char-Array. Google is your friend!