[C] Cosa fa la seguente funzione?

Messaggioda Powervegeta » 26/11/2014, 14:20

Ciao ragazzi, non riesco a trovare quale siano i risultati che restituiscono le seguenti funzioni:
Codice:
int g(int a, int b, int c)
{
    int i;
    for (; c>0; c/=b)
        if (a == (c%b)) return 1;
    return 0;
}

int f(int a, int b)
{
    int n=0;
    for (; a>0; a /= b)
        if (!g(a%b, b, a/b))
            n++;
    return n;
}
Powervegeta
New Member
New Member
 
Messaggio: 15 di 78
Iscritto il: 13/03/2010, 17:19

Re: [C] Cosa fa la seguente funzione?

Messaggioda apatriarca » 26/11/2014, 14:52

La funzione \(g\) verifica se \(a\) è una delle cifre in base \(b\) di \(c\). Dopo \(n\) iterazioni del ciclo avrai infatti che \(c\) sarà diventato uguale a \(c/b^n\) e quindi confronti il resto della divisione \( (c/b^n)/b \) con \(a\). Il resto di quella divisione è uguale alla \(n-\)esima cifra in base \(b\) di \(c\).

La funzione \(f\) divide invece \(a\) per \(b\) ed incrementa \(n\) ogni volta che la cifra corrente di \(a\) non è anche una cifra di \(a/b\). Ovviamente le cifre sono in base \(b\). Stai insomma verificando se \(a\) ha tutte cifre diverse tra di loro in base \(b\).
apatriarca
Moderatore
Moderatore
 
Messaggio: 3619 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [C] Cosa fa la seguente funzione?

Messaggioda Powervegeta » 26/11/2014, 15:21

Ok, grazie mille :)
Powervegeta
New Member
New Member
 
Messaggio: 16 di 78
Iscritto il: 13/03/2010, 17:19


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite