Binärzahlen > Dezimalzahlen [C Anfänger]



  • Hey Leute,
    Ich hänge gerade an einer Aufgabe die lautet wie folgt;

    "Entwickeln Sie ein Programm, das eine dreistellige Binärzahl von der Tastatur einliest.
    Lesen sie hierzu jeweils drei Ziffern einer Binärzahl als Zeichen (char) ein. Wandeln Sie
    die eingelesenen Ziffern in eine Dezimalzahl um und geben das Ergebnis auf dem
    Bildschirm aus"

    Bis jetzt sieht mein Code aus wie folgt:

    #include <stdio.h>

    int main()
    {
    char a,b,c;
    printf("Bitte geben sie drei Binärzahlen ein (1 oder 0):");
    scanf("%c %c %c",&a,&b,&c);
    ("Die eingegebene Zahl lautet:%c %c %c",a,b,c);

    if (c=='0')
    c=(c-'0'); //0
    else
    c=(c-'0'); //1
    if (b=='0')
    b=(b-'0'); //0
    else
    b=(b-'0'); //2
    if (a=='0')
    a=(a-'0'); //0
    else
    a=(a-'0'); //4

    printf("Dezimalzahl:%d",a+b+c);
    }

    Mir wird aber leider nicht das richtige Ergebnis angezeigt. Habt ihr Ideen?
    Mit Arrays kenne ich mich noch nicht aus.



  • Kexplx2334 schrieb:

    if (c=='0')
    c=(c-'0'); //0
    else
    c=(c-'0'); //1

    Dir ist schon klar, dass Du das if gar nicht brauchst, wenn Du in beiden Fällen das gleiche machst?

    Mir wird aber leider nicht das richtige Ergebnis angezeigt. Habt ihr Ideen?
    Mit Arrays kenne ich mich noch nicht aus.

    Naja, irgendwo musst Du auch den Wert der einzelnen Stellen (1, 2, 4) verwenden. Nicht nur im Kommentar ^^



  • [Selber User, neuer Rechner]

    Hab das Ganze mal ein bisschen umgeschrieben:

    #include <stdio.h>

    int main()
    {
    int a,b,c;
    printf("Bitte geben sie drei Binärzahlen ein (1 oder 0): ");
    scanf("%c %c %c",&a,&b,&c);
    printf("Die eingegebene Zahl lautet:%c%c%c\n",a,b,c);

    if (c=='0')
    c=0;
    else
    c=1;
    if (b=='0')
    b=0;
    else
    b=2;
    if (a=='0')
    a=0;
    else
    a=4;

    printf("\nDezimalzahl: %d\n",a+b+c);
    }

    Bei manchen Eingaben wie: 111 101 001 ... bringt er mir das richtige Ergebnis, bei Eingaben wie 110, 000 falsche. Ich kann nicht ermitteln wo der Fehler liegt.



  • Kexplx schrieb:

    Bei manchen Eingaben wie: 111 101 001 ... bringt er mir das richtige Ergebnis, bei Eingaben wie 110, 000 falsche. Ich kann nicht ermitteln wo der Fehler liegt.

    Aktivier mal Warnungen in Deinem Compiler.
    Z.B.:
    gcc -Wall -pedantic ...



  • Oh Gott sorry 😉

    Vielen Dank.


Anmelden zum Antworten