Binär Zahlen in Dezimalzahlen wandeln
-
Naja wenn du es dynamisch machen willst ohne das der benutzer vorher die stellen angeben muss wird ich dir getch() empfehlen. Like This.
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <conio.h> int main() { unsigned char bit; int word[20],length = -1, i, first = 1, dec = 0; system("cls"); printf("Zahl:"); while (1) { bit = getch(); if ((bit==224) || (bit==0)) { bit = getch(); } if (bit == 49) { first = 0; printf("%c",bit); length++; word[length] = 1; } if (first != 1 && bit == 48) { first = 0; printf("%c",bit); length++; word[length] = 0; } if (first != 1 && bit == 13) { break; } } for (i = 0; i <= length; i++) { dec = dec + word[i] * pow(2,(length - i)); } printf("\nDezimal=%d\n",dec); }
Müsst funktionieren!
-
Hey danke für die Lösung.
Kannst du sie mir auch noch etwas erklären würde sie gern verstehen
gruß mtx89
-
rollerfreak2 schrieb:
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <conio.h> int main() { // länglicher quelltext }
int main() { int bit; int dec = 0; printf("Zahl:"); next: bit = getch(); if (bit == '0' || bit == '1') { putchar (bit); dec = 2 * dec + bit - '0'; goto next; } printf("\nDezimal=%d\n",dec); }
-
Die Lösung ist doch einiges kürzer :p
Aber frage kann man das goto auch durch ne schleife ersetzen??
Weil kenn mich nicht mit goto aus.Was passiert bei dem Befehl putchar (bit)??
-
next: bit = getch(); if (bit == '0' || bit == '1') { putchar (bit); dec = 2 * dec + bit - '0'; goto next; }
while(bit =='0' || bit == '1'){ ... }
goto nur benutzen wenn es sich anbietet
-
int main(){ int bit; int dec = 0; printf("Zahl:"); bit = getch(); while(bit =='0' || bit == '1'){ putchar (bit); dec = 2 * dec + bit - '0'; } printf("\nDezimal=%d\n",dec); return 0; }
Aber jetzt bekomm ich ne endlos Schleife
-
Stelfer schrieb:
goto nur benutzen wenn es sich anbietet
mtx89 schrieb:
Aber jetzt bekomm ich ne endlos Schleife
tja, das kommt davon, wenn man mit aller gewalt auf 'goto' verzichten will
na, aber im ernst, es geht auch ohne:int main() { int bit = '0'; int dec = 0; printf("Zahl:"); while (bit == '0' || bit == '1') { dec = 2 * dec + bit - '0'; bit = getch(); putchar (bit); } printf("\nDezimal=%d\n",dec); }
aber jetzt, ohne goto, finde ich, leidet die verständlichkeit etwas.
-
Hey super!
Also ich verstehs.Aber eine Frage hab ich noch was bewirkt putchar (bit)???
-
mtx89 schrieb:
Hey super!
Also ich verstehs.
Aber eine Frage hab ich noch was bewirkt putchar (bit)???soso, du verstehst es, aber fragst was putchar bedeutet?
wiederspricht sich das nicht etwas?btw: putchar() gibt ein zeichen aus.
-
Will ja nicht meckern. aber nie nie mit goto programmieren. Da streuben sich ja einen die Haare...!
-
rollerfreak2 schrieb:
Will ja nicht meckern. aber nie nie mit goto programmieren. Da streuben sich ja einen die Haare...!
falsch!
goto mit verstand benutzen !
es geht zwar immer ohne goto aber es ist manchmal sinnvoll es zu benutzen
wie z.b. bei 20 verschachtelungen ....