Questo in C dovrebbe andare:
codice:
#include<stdio.h> // printf() scanf()
#include<string.h> // strlen()
#include<stdlib.h> // system() exit()
#define MAX 16
void unita(char numeri);
char decine(char numeri, char c);
void main(){
int lenx=0, leny=0;
char numeri[MAX], c='\0';
while(numeri){
system("CLS");
printf("[e] = esci\n");
printf("Inserire il prezzo in Euro [MAX. 999.999.999.999,99]: ");
scanf("%s",&numeri);
if(numeri[0]=='e' || numeri[0]=='E')exit(1);
for(lenx=0;lenx<16;lenx++){
if(numeri[lenx]==',' || numeri[lenx]=='\0')break;
}
for(leny=0;leny<16;leny++){
if(numeri[leny]=='\0')break;
}
leny=(leny-lenx)-1;
printf("\n");
// MAX 9
if(lenx==1){
if(numeri[0]=='0'){
printf("zero");
}
else{
unita(numeri[0]);
}
}
// MAX 99
if(lenx==2){
c=numeri[1];
if(decine(numeri[0],c)!='1')unita(numeri[1]);
}
// MAX 999
if(lenx==3){
if(numeri[0]!='1')unita(numeri[0]);
printf("cento");
c=numeri[2];
if(decine(numeri[1],c)!='1')unita(numeri[2]);
}
// MAX 9.999
if(lenx==4){
if(numeri[0]!='1'){
unita(numeri[0]);
printf("mila");
}
else{
printf("mille");
}
if(numeri[1]!='1' && numeri[1]!='0')unita(numeri[1]);
if(numeri[1]!='0')printf("cento");
c=numeri[3];
if(decine(numeri[2],c)!='1')unita(numeri[3]);
}
// MAX 99.999
if(lenx==5){
c=numeri[1];
if(decine(numeri[0],c)!='1')unita(numeri[1]);
printf("mila");
if(numeri[2]!='1' && numeri[2]!='0')unita(numeri[2]);
if(numeri[2]!='0')printf("cento");
c=numeri[4];
if(decine(numeri[3],c)!='1')unita(numeri[4]);
}
// MAX 999.999
if(lenx==6){
if(numeri[0]!='1')unita(numeri[0]);
printf("cento");
c=numeri[2];
if(decine(numeri[1],c)!='1')unita(numeri[2]);
printf("mila");
if(numeri[3]!='1' && numeri[3]!='0')unita(numeri[3]);
if(numeri[3]!='0')printf("cento");
c=numeri[5];
if(decine(numeri[4],c)!='1')unita(numeri[5]);
}
// MAX 9.999.999
if(lenx==7){
if(numeri[0]!='1'){
unita(numeri[0]);
printf("milioni");
}
else{
printf("unmilione");
}
if(numeri[1]!='1' && numeri[1]!='0')unita(numeri[1]);
if(numeri[1]!='0')printf("cento");
c=numeri[3];
if(numeri[1]=='0' && numeri[2]=='0' && numeri[3]=='1'){
printf("mille");
}
else{
if(decine(numeri[2],c)!='1')unita(numeri[3]);
if(numeri[1]!='0' || numeri[2]!='0' || numeri[3]!='0')printf("mila");
}
if(numeri[4]!='1')unita(numeri[4]);
if(numeri[4]!='0')printf("cento");
c=numeri[6];
if(decine(numeri[5],c)!='1')unita(numeri[6]);
}
// MAX 99.999.999
if(lenx==8){
c=numeri[1];
if(decine(numeri[0],c)!='1')unita(numeri[1]);
printf("milioni");
if(numeri[2]!='1' && numeri[2]!='0')unita(numeri[2]);
if(numeri[2]!='0')printf("cento");
c=numeri[4];
if(numeri[2]=='0' && numeri[3]=='0' && numeri[4]=='1'){
printf("mille");
}
else{
if(decine(numeri[3],c)!='1')unita(numeri[4]);
if(numeri[2]!='0' || numeri[3]!='0' || numeri[4]!='0')printf("mila");
}
if(numeri[5]!='1')unita(numeri[5]);
if(numeri[5]!='0')printf("cento");
c=numeri[7];
if(decine(numeri[6],c)!='1')unita(numeri[7]);
}
// MAX 999.999.999
if(lenx==9){
if(numeri[0]!='1')unita(numeri[0]);
if(numeri[0]!='0')printf("cento");
c=numeri[2];
if(decine(numeri[1],c)!='1')unita(numeri[2]);
printf("milioni");
if(numeri[3]!='1' && numeri[3]!='0')unita(numeri[3]);
if(numeri[3]!='0')printf("cento");
c=numeri[5];
if(numeri[3]=='0' && numeri[4]=='0' && numeri[5]=='1'){
printf("mille");
}
else{
if(decine(numeri[4],c)!='1')unita(numeri[5]);
if(numeri[3]!='0' || numeri[4]!='0' || numeri[5]!='0')printf("mila");
}
if(numeri[6]!='1')unita(numeri[6]);
if(numeri[6]!='0')printf("cento");
c=numeri[8];
if(decine(numeri[7],c)!='1')unita(numeri[8]);
}
// MAX 9.999.999.999
if(lenx==10){
if(numeri[0]!='1'){
unita(numeri[0]);
printf("miliardi");
}
else{
printf("unmiliardo");
}
if(numeri[1]!='1')unita(numeri[1]);
if(numeri[1]!='0')printf("cento");
c=numeri[3];
if(decine(numeri[2],c)!='1')unita(numeri[3]);
if(numeri[1]!='0' || numeri[2]!='0' || numeri[3]!='0')printf("milioni");
if(numeri[4]!='1' && numeri[4]!='0')unita(numeri[4]);
if(numeri[4]!='0')printf("cento");
c=numeri[6];
if(numeri[4]=='0' && numeri[5]=='0' && numeri[6]=='1'){
printf("mille");
}
else{
if(decine(numeri[5],c)!='1')unita(numeri[6]);
if(numeri[4]!='0' || numeri[5]!='0' || numeri[6]!='0')printf("mila");
}
if(numeri[7]!='1')unita(numeri[7]);
if(numeri[7]!='0')printf("cento");
c=numeri[9];
if(decine(numeri[8],c)!='1')unita(numeri[9]);
}
// MAX 99.999.999.999
if(lenx==11){
c=numeri[1];
if(decine(numeri[0],c)!='1')unita(numeri[1]);
printf("miliardi");
if(numeri[2]!='1')unita(numeri[2]);
if(numeri[2]!='0')printf("cento");
c=numeri[4];
if(decine(numeri[3],c)!='1')unita(numeri[4]);
if(numeri[2]!='0' || numeri[3]!='0' || numeri[4]!='0')printf("milioni");
if(numeri[5]!='1' && numeri[5]!='0')unita(numeri[5]);
if(numeri[5]!='0')printf("cento");
c=numeri[6];
if(numeri[5]=='0' && numeri[6]=='0' && numeri[7]=='1'){
printf("mille");
}
else{
if(decine(numeri[6],c)!='1')unita(numeri[7]);
if(numeri[5]!='0' || numeri[6]!='0' || numeri[7]!='0')printf("mila");
}
if(numeri[8]!='1')unita(numeri[8]);
if(numeri[8]!='0')printf("cento");
c=numeri[10];
if(decine(numeri[9],c)!='1')unita(numeri[10]);
}
// MAX 999.999.999.999
if(lenx==12){
if(numeri[0]!='1')unita(numeri[0]);
if(numeri[0]!='0')printf("cento");
c=numeri[2];
if(decine(numeri[1],c)!='1')unita(numeri[2]);
printf("miliardi");
if(numeri[3]!='1')unita(numeri[3]);
if(numeri[3]!='0')printf("cento");
c=numeri[5];
if(decine(numeri[4],c)!='1')unita(numeri[5]);
if(numeri[3]!='0' || numeri[4]!='0' || numeri[5]!='0')printf("milioni");
if(numeri[6]!='1' && numeri[6]!='0')unita(numeri[6]);
if(numeri[6]!='0')printf("cento");
c=numeri[7];
if(numeri[6]=='0' && numeri[7]=='0' && numeri[8]=='1'){
printf("mille");
}
else{
if(decine(numeri[7],c)!='1')unita(numeri[8]);
if(numeri[6]!='0' || numeri[7]!='0' || numeri[8]!='0')printf("mila");
}
if(numeri[9]!='1')unita(numeri[9]);
if(numeri[9]!='0')printf("cento");
c=numeri[11];
if(decine(numeri[10],c)!='1')unita(numeri[11]);
}
if(leny>0)printf(" virgola ");
// MAX 9
if(leny==1){
if(numeri[lenx+1]=='0'){
printf("zero");
}
else{
unita(numeri[lenx+1]);
}
}
// MAX 99
if(leny==2){
c=numeri[1];
if(decine(numeri[lenx+1],c)!='1')unita(numeri[lenx+2]);
}
// Accetta solo stringhe numeriche (di lunghezza inferiore a 13, MAX 999.999.999.999)
if((lenx<13&&leny<3) && (numeri[0]=='0'||numeri[0]=='1'||numeri[0]=='2'||numeri[0]=='3'||numeri[0]=='4'||numeri[0]=='4'||numeri[0]=='5'||numeri[0]=='6'||numeri[0]=='7'||numeri[0]=='8'||numeri[0]=='9')){
printf("\n\n");
system("PAUSE");
}
}
}
void unita(char numeri){
switch(numeri){
case '1':
printf("uno");
break;
case '2':
printf("due");
break;
case '3':
printf("tre");
break;
case '4':
printf("quattro");
break;
case '5':
printf("cinque");
break;
case '6':
printf("sei");
break;
case '7':
printf("sette");
break;
case '8':
printf("otto");
break;
case '9':
printf("nove");
break;
default:
break;
}
}
char decine(char numeri, char c){
switch(numeri){
case '1':
if(c=='0'){
printf("dieci");
}
if(c=='1'){
printf("undici");
}
if(c=='2'){
printf("dodici");
}
if(c=='3'){
printf("tredici");
}
if(c=='4'){
printf("quattordici");
}
if(c=='5'){
printf("quindici");
}
if(c=='6'){
printf("sedici");
}
if(c=='7'){
printf("diciassette");
}
if(c=='8'){
printf("diciotto");
}
if(c=='9'){
printf("diciannove");
}
return '1';
break;
case '2':
if(c=='1' || c=='8'){
printf("vent");
}
else{
printf("venti");
}
break;
case '3':
if(c=='1' || c=='8'){
printf("trent");
}
else{
printf("trenta");
}
break;
case '4':
if(c=='1' || c=='8'){
printf("quarant");
}
else{
printf("quaranta");
}
break;
case '5':
if(c=='1' || c=='8'){
printf("cinquant");
}
else{
printf("cinquanta");
}
break;
case '6':
if(c=='1' || c=='8'){
printf("sessant");
}
else{
printf("sessanta");
}
break;
case '7':
if(c=='1' || c=='8'){
printf("settant");
}
else{
printf("settanta");
}
break;
case '8':
if(c=='1' || c=='8'){
printf("ottant");
}
else{
printf("ottanta");
}
break;
case '9':
if(c=='1' || c=='8'){
printf("novant");
}
else{
printf("novanta");
}
break;
default:
break;
}
return '0';
}
P.S: la formattazione a tratti fa SCH***