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 Zi ernfolge einliest und den entsprechenden dezimalen Wert
    ausgibt. Die binare Zi ernfolge 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.


Anmelden zum Antworten