Binär Zahlen in Dezimalzahlen wandeln



  • 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 ....


Anmelden zum Antworten