Questo in C dovrebbe andare:
P.S: la formattazione a tratti fa SCH***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'; }![]()

Rispondi quotando