/*** Esercizio (facoltativo): scrivi programma che, letto un numero intero fra -999 e +999 scriva sullo schermo il numero in lettere. Esempio 347 ->scrive "trecentoquarantasette" ***/ #include #include #include int main(){ char unita[10][8] = {"zero", "uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove"}; char decine[10][10] = {"", "", "venti", "trenta", "quaranta", "cinquanta", "sessanta", "settanta", "ottanta", "novanta"}; char dieci[10][20] = {"dieci", "undici", "dodici", "tredici", "quattordici", "quindici", "sedici", "diciassette", "diciotto", "diciannove"}; char n[4]; char snumero[50] = {0}; int diecib = 0; int lunghezza, i; printf("Inserisci un numero: "); scanf("%s", n); lunghezza = strlen(n); if(atoi(n) < 0){ strcat(snumero, "meno "); for(i = 0; i < lunghezza; i++){ n[i] = n[i+1]; } lunghezza--; } switch(lunghezza){ case 1: strcat(snumero, unita[n[0]-48]); break; case 2: if(atoi(n) == 40)strcat(snumero, "centoquattro");break; if(atoi(n) > 9 && atoi(n) < 20){ strcat(snumero, dieci[n[1]-48]); }else{ strcat(snumero, decine[n[0]-48]); if(n[1]-48) strcat(snumero, unita[n[1]-48]); } break; case 3: if(n[0]-48 == 1){ strcat(snumero, "cento"); if(n[1]-48) strcat(snumero, decine[n[1]-48]); if(n[2]-48) strcat(snumero, unita[n[2]-48]); }else{ if(n[0]-48){ strcat(snumero, unita[n[0]-48]); strcat(snumero, "cento"); } if(n[1]-48){ if(n[1]-48 == 1){ strcat(snumero, dieci[n[2]-48]); diecib = 1; }else{ strcat(snumero, decine[n[1]-48]); } } if(n[2]-48 && !diecib) strcat(snumero, unita[n[2]-48]); } break; } printf("\nNumero in lettere: %s", snumero); return 0; }