dichiarazione:
- Codice:
extern char max_pot10 (unsigned int val);
La funzione riceve un valore intero non negativo val e ritorna l’esponente della massima potenza del dieci contenuta in val. Ad esempio se val=123, 10^0 è contenuto in val, 10^1 è contenuto in val, 10^2 è contenuto in val, 10^3 non è contenuto in val. Quindi la funzione deve ritornare 2 (in altre parole il numero è nell’ordine delle centinaia). Se il numero è 0, la funzione deve ritornare -1. Se ad esempio chiamassimo la funzione inizializzando val a 123456, questa dovrebbe ritornare 5. Però nel mio caso non mi restituisce il valore 5, qualcuno potrebbe riscrivere il pezzo di codice in cui sbaglio?
- Codice:
char max_pot10(unsigned int val) {
if (val == 0) {
return -1;
}
if (val == 1) {
return 0;
}
if (val == 12) {
return 1;
}
if (val == 123) {
return 2;
}
if (val == 1234) {
return 3;
}
if (val == 12345) {
return 4;
}
}
int main(void) {
unsigned int val, z;
val = 123456;
z = max_pot10(val);
return 0;
}