Binär Zahlen in Dezimalzahlen wandeln
-
kann mir jemand sagen wir ich mit C es hinbekomme eine binär Zhal in eine Dezimal zuwandeln ???
Gruß mtx89
-
mehr info.
-
hmmm
sowas?
long func_bin_dez(char zahl[]) { int i, zahl_len, p; zahl_len=strlen(zahl); i=1; p=0; for(zahl_len=zahl_len-1;zahl_len>=0;zahl_len--) { p+=((int)a[zahl_len]-48)*i; i=i*2; } return p; }
-
Ich möchte das der Benutzer die binäre Zahl ein gibt und das Programm diese umwandelt in eine Dezimalzahl!
Hab mir schon gedanken gemacht! Weiß aber nicht wie ich die einzelnen Stellen aus der binären Zahl rausbekomm.
-
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 ....