Was genau bedeutet cin.get() ??
-
Hallo,
Ich bin C++ Anfänger und hänge an meiner aktuellen Übungsaufgabe.
Meine Aufgabe ist:
Schreiben Sie ein C++-Programm, das eine binare Ziernfolge einliest und den entsprechenden dezimalen Wert
ausgibt. Die binare Ziernfolge wird zeichenweise beginnend mit dem hochstwertigen
Bit von der Tastatur eingelesen. D.h, die Zeichen werden von links nach
rechts eingelesen. Jedes Zeichen wird unmittelbar verwendet, um das Ergebnis
zu aktualisieren.
Hinweis: Lesen Sie die einzelnen Zeichen in eine char-Variablen ein. Verwenden
Sie hierzu das Kommando cin.get(Variablenname), wobei Variablenname
der Name der char-Variablen ist. Der Kopf der Schleife konnte somit folgendes
Aussehen haben:
while (cin.get(c) && ( c == '0' || c == '1'))Mein Programm sieht folgendermaßen aus:
#include <iostream>
using namespace std;int main ()
{
int e=0;
char c;cout << "Bitte eine binäre Zahl eingeben!\n";
while (cin.get(c) && ( c == '0' || c == '1'))
{
e=e*2+c;}
cout << e << "\n";
return 0;
}Leider funktioniert es nicht richtig. Das könnte daran liegen, dass ich nicht genau weiß, wie cin.get funktioniert. Wie gebe ich z.B. meine Ziffern ein? Getrennt durch Enter oder nur mit einem Leerzeichen getrennt und mit Enter das Ende bestätigen?
Wäre sehr dankbar für Lösungsansätze!!!
Liebe Grüße!
-
'0' oder '1' sind char-Literale. Versuch mal e=e*2+c-'0' oder e=e*2+c=='1' oder sowas.
-
wow dankeschön, ich weiß zwar immer noch nicht warum aber jetzt läufts mein programm
-
Mathe2107 schrieb:
wow dankeschön, ich weiß zwar immer noch nicht warum aber jetzt läufts mein programm
Durch e = e*2 werden die bestehenden Bits um eine Stelle nach links verschoben (ginge auch mit e = e << 1). In c steht ein ASCII-Wert, entweder 48 (== '0') oder 49 (== '1'). Wenn du jetzt '0' abziehst, kommt 0 oder 1 raus, das addierst du dann zu e und setzt somit das letzte Bit.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum C++ (auch C++0x) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.