b-adische Darstellung



  • Hallo, kann mir jemand erklären, was diese funktion tut?

    unsigned int ziffern(unsigned int b,unsigned int a){
    unsigned int c=0;
    if(a/b){ c=ziffern(b,a/b)+1;

    printf("%d",a%b);

    return c;
    }
    Ich verstehe einfach nicht, warum das funktioniert.Wohin wird c gegeben?
    Gruß, Julia



  • Das funktioniert gar nicht!

    unsigned int ziffern(unsigned int b,unsigned int a)
    { 
    unsigned int c=0; 
    
    if(a/b){ c=ziffern(b,a/b)+1; //<- if wurde { geöffnet aber nicht geschlossen!
    
    printf("%d",a%b); 
    
    return c; 
    }
    

    und c wird von der funktion zurückgegeben!
    [EDIT]und zwar als unsigned int![/EDIT]

    mfg hohesC



  • Du brauchst c nicht

    void ziffern (unsigned int b,unsigned int a)
    {
     if(a/b)
       ziffern (b,a/b);
     printf("%d",a%b);
    }
    

    tut's auch



  • der sinn der variablen "c" und des returns war, die ziffern zu zählen...
    das muss nicht weggemacht werden.

    die funktion an sich gibt zahl a mit basis b aus. z.b. a=1234 und b = 10 würde "1234" ausgeben (glaub ich jetz mal).
    a = 10 und b = 2 würde "1010" ausgeben (1010 ist binär für 10 dezimal).



  • Hallo,

    falls ich das richtig sehe, kann man 'c' dennoch weglassen:

    unsigned int ziffern(unsigned int b,unsigned int a) {
        if(a/b) { 
            return ziffern(b,a/b)+1;
            printf("%d",a%b);
        }
        return 0;
    }
    

    mfg
    v R


Anmelden zum Antworten