#include <stdio.h>

int binario(int n) /// verifica se un numero e' binario: es 10010 si, 1010201 no
{
    while(n>0)
    {
        if (n % 10 >1)
            return 0;
        n/=10;
    }
    return 1;
}


/** int bindec(int n)   se n e' un numero binario ritorna il corrispondente decimale, se n e' decimale ritorna il corrispondente binario
                        es: se n == 100 lo vede come binario e ritorna 4 (il corrispondente decimale)
                            se n == 4 lo vede come decimale e ritorna 100 (il corrispondente binario)**/
int bindec(int n)
{
    int valore=0;
    int p=1;
    if (binario(n))
        while(n>0)   /// converto da binario a decimale
        {
            valore+=p*(n%2);
            p*=2;
            n/=10;
        }
    else
        while(n>0)  /// converto da decimale a binario
        {
            valore+=p*(n%2);
            p*=10;
            n/=2;
        }
         return valore;
}









int bindec2(int n)  /// Versione 2 piu' compatta
{
    int valore=0;
    int p=1;
    int b=binario(n); /// b == booleano, vero se n e' binario

    while(n>0)   /// converto da binario a decimale o da decimale a binario
    {
            valore+=p*(n%2);
            if (b) p*=2,  n/=10;
            else   p*=10, n/=2;
    }
    return valore;
}


/// main un po' piu' sotto!!!














int main()
{
    int num;
    do {
        printf("Un numero (decimale o binario)->");
        scanf("%d",&num);
        printf("Valore -->%d\n",bindec(num));
        ///printf("Valore -->%d\n",bindec2(num));    /// piu' compatta
    }while(num!=0);
}
