/*-------------------------------------------------------------------------* * N2C.PRG * * Copyright (c) 2003 by Claudio Piccini * *-------------------------------------------------------------------------* * PROCEDURA N2C() * *-------------------------------------------------------------------------* * DESCRIZIONE * * Traduce un numero in lettere * *-------------------------------------------------------------------------*/ PROCEDURE Main() LOCAL cAmtStr, cRetVal LOCAL nAmt, n0, n1, n2, n3, n4, n5, n6, n7 LOCAL aUnit := {"uno","due","tre","quattro","cinque","sei","sette","otto","nove"} LOCAL aDec := {"dieci","venti","trenta","quaranta","cinquanta","sessanta","settanta","ottanta","novanta"} LOCAL a10_19 := {"dieci","undici","dodici","tredici","quattordici","quindici","sedici","diciassette","diciotto","diciannove"} cls while .t. nAmt := 0 @10,2 say "Numero: " get nAmt picture "9999999.99" read if nAmt == 0 exit endif cAmtStr := PadL(lTrim(Str(nAmt, 10,2)),10,"0") n0 := Val(SubStr(cAmtStr,9,2)) n1 := Val(SubStr(cAmtStr,7,1)) n2 := Val(SubStr(cAmtStr,6,1)) n3 := Val(SubStr(cAmtStr,5,1)) n4 := Val(SubStr(cAmtStr,4,1)) n5 := Val(SubStr(cAmtStr,3,1)) n6 := Val(SubStr(cAmtStr,2,1)) n7 := Val(SubStr(cAmtStr,1,1)) if n7 == 0 cRetVal := space(0) elseif n7 == 1 cRetVal := "unmilione" else cRetVal := aUnit[n7] + "milioni" endif if n6 == 0 cRetVal += space(0) elseif n6 == 1 cRetVal += "cento" else cRetVal += aUnit[n6] + "cento" endif cRetVal += If(n5 == 0,Space(0),If(n4 == 0,aDec[n5],If(n5 == 1,a10_19[n4+1]+"mila",aDec[n5]))) cRetVal += If(n4 == 0,Space(0),If(n5 == 1,Space(0),aUnit[n4]))+If(n4+n5+n6 == 0,Space(0),If(n4 == 1,"mille","mila")) cRetVal += If(n3 == 0,Space(0),If(n3 == 1,"cento",aUnit[n3]+"cento")) cRetVal += If(n2 == 0,Space(0),If(n1 == 0,aDec[n2],If(n2 == 1,a10_19[n1+1],aDec[n2]))) cRetVal += If(n1 == 0,Space(0),If(n2 == 1,Space(0),aUnit[n1])) if len(cRetVal) > 0 cRetVal := strTran(cRetVal,"oo","o") cRetVal := strTran(cRetVal,"tao","to") cRetVal := strTran(cRetVal,"tiu","tu") cRetVal := strTran(cRetVal,"tio","to") cRetVal := strTran(cRetVal,"tau","tu") if at("unomille",cRetVal) != 0 .and. at("unomille",cRetVal) = 1 cRetVal := strTran(cRetVal,"unomille","mille") endif if at("mille",cRetVal) != 0 .and. at("mille",cRetVal) > 1 cRetVal := strTran(cRetVal,"mille","mila") endif cRetVal := strTran(cRetVal,"unmilioneunomila","unmilionemille") cRetVal := strTran(cRetVal,"milioniunomila","milionimille") cRetVal := strTran(cRetVal,"milamila","mila") cRetVal += "/" + ltrim(str(n0,2,0)) else cRetVal := ltrim(str(n0,2,0)) endif @11,2 clear @12,2 say cRetVal end @14,2 say "Premere un tasto per terminare..." inkey(0) cls RETURN