/* STAMPA DI UN NUMERO INTERO */ #include #include void print10(int n); // stampa n in base 10 (versione ric.) int length10(int n); // numero cifre di n int pos10(int n, int k); // intero corrispondente alla cifra di n in posizione k void print10it(int n); // stampa n in base 10 (versione it.) int main(){ int n; printf("Inserire n>=0 ---> "); scanf("%d", &n); if(n>=0){ printf("\nStampa in base 10 (versione ric.) "); print10(n); printf("\nNumero cifre: %d\n", length10(n)); printf("Prima cifra: %d\n", pos10(n,length10(n)-1)); printf("Ultima cifra: %d\n", pos10(n,0)); printf("Stampa in base 10 (versione it.) "); print10it(n); putchar('\n'); } else printf("n deve essere >= 0\n"); return 0; } /*****************************************************/ /* Stampa un intero n>= 0 in base 10. Versione ricorsiva */ void print10(int n){ // .... } /*****************************************************/ // prototipi funzioni usate in length10() int length10_1(int n); int length10_2(int n); int length10_3(int n); /* Restituisce il numero di cifre della rappresentazione in base 10 di un intero n>= 0. */ int length10(int n){ return length10_3(n); // OPPURE: return length10_2(n); // OPPURE: return length10_3(n); } /* Restituisce il numero di cifre della rappresentazione in base 10 di un intero n>= 0. Versione ricorsiva */ int length10_1(int n){ // ..... return -1; } /* Restituisce il numero di cifre della rappresentazione in base 10 di un intero n>= 0. Versione iterativa. */ int length10_2(int n){ // .... return -1; } /* Restituisce il logaritmo in base b di n, con b>0, b!=1 e n>0 */ double lg(int b, int n){ return log(n)/log(b); } /* Restituisce il numero di cifre della rappresentazione in base 10 di un intero n>= 0. Calcolo diretto mediante una formula. */ int length10_3(int n){ // ... return -1; } /* Restituisce l'intero corrispondente alla cifra in posizione k della rappresentazione in base 10 di un intero n>=0. Si assume 0 <= k < length10(n), dove: - la posizione 0 corrisponde all'ultima cifra di n (la cifra meno significativa) - la posizione length10(n)-1 alla prima cifra di n (la cifra piu' significativa) */ int pos10(int n, int k){ // ... return -1; } /* Stampa un intero n>= 0 in base 10. Versione iterativa. */ void print10it(int n){ // ... }