Buongiorno,
riporto il codice che ho modificato funzionante per ottenere la conversione da un numero in lettere. Converte solo numeri interi.
I tentativi fatti con esito negativo per completare anche l'inserimento dei decimali con il punto, la virgola o la barra.
Auguro che possiate suggerire.
Ringrazio anticipatamente fiducioso, saluto.
Domenico.
riporto il codice che ho modificato funzionante per ottenere la conversione da un numero in lettere. Converte solo numeri interi.
I tentativi fatti con esito negativo per completare anche l'inserimento dei decimali con il punto, la virgola o la barra.
Auguro che possiate suggerire.
Ringrazio anticipatamente fiducioso, saluto.
Domenico.
Codice:
string[] numeri1_19 = {
"","uno", "due", "tre", "quattro", "cinque","sei", "sette", "otto", "nove", "dieci", "undici",
"dodici", "tredici", "quattordici","quindici", "sedici", "diciassette", "diciotto","diciannove" };
string[] decine = { "", "", "venti", "trenta","quaranta", "cinquanta", "sessanta", "settanta", "ottanta", "novanta" };
string[] centinaia = { "", "cento", "duecento", "trecento","quattrocento", "cinquecento", "seicento","settecento", "ottocento", novecento" };
int[] v = new int[8];
private void TextBox_KeyPress(object sender, KeyPressEventArgs e
if (e.KeyChar == 13 && TextBox.Text != "")
{
Btn_Converti_Click(sender, e);
}
if (char.IsDigit(e.KeyChar))
{
string temp = TextBox.Text + e.KeyChar.ToString();
if (Convert.ToInt32(temp) >= 0) return;
}
e.KeyChar = (char)0;
}
private void Btn_Converti_Click(object sender, EventArgs e)
{
Label3.Text = (convertiinlettere(Convert.ToInt32(TextBox.Text)));
}
string convertiinlettere (int num)
{
if(num<20) return numeri1_19[num];
int nc = 0;
int temp = num;
while (temp > 0)
{
temp /= 10;
nc++;
}
temp=num;
int cifra;
for(int i=nc;i!=0;i--)
{
cifra=(int)(temp/Math.Pow(10,i-1));
temp-=(int) (cifra*Math.Pow(10,i-1));
v[i-1]=cifra;
}
string mila,milioni;
switch(nc)
{
case(2): //decine-unità
return Dec_uni(v[1],v[0]);
case(3)://centinaia-decine-unità
return centinaia[v[2]]+Dec_uni(v[1],v[0]);
case(4)://migliaia-centinaia-decine-unità
if(num<2000) return "mille"+centinaia[v[2]]+Dec_uni(v[1],v[0]);
return numeri1_19[v[3]]+"mila"+centinaia[v[2]]+Dec_uni(v[1],v[0]);
case(5)://decine di migliaia-centinaia-decine-unità
return Dec_uni(v[4],v[3])+"mila"+centinaia[v[2]]+Dec_uni(v[1],v[0]);
case(6)://centinaia di migliaia-centinaia-decine-unità
return centinaia[v[5]]+Dec_uni(v[4],v[3])+"mila"+centinaia[v[2]]+Dec_uni(v[1],v[0]);
case (7)://milioni-migliaia_centinaia-decine-unità
milioni = numeri1_19[v[6]] + "milioni";
if (v[6] == 1) milioni = "unmilione";
mila = centinaia[v[5]] + Dec_uni(v[4], v[3]) + "mila";
if (v[5] == 0 && v[4] == 0 && v[3] == 0) mila = "";
if (v[5] == 0 && v[4] == 0 && v[3] == 1) mila = "mille";
return milioni + mila + centinaia[v[2]] + Dec_uni(v[1], v[0]);
case (8)://decine di milioni-migliaia-centinaia-decine-unità
milioni = Dec_uni(v[7], v[6]) + "milioni";
mila = centinaia[v[5]] + Dec_uni(v[4], v[3]) + "mila";
if (v[5] == 0 && v[4] == 0 && v[3] == 0) mila = "";
if (v[5] == 0 && v[4] == 0 && v[3] == 1) mila = "mille";
return milioni + mila + centinaia[v[2]] + Dec_uni(v[1], v[0]);
default:
return "";
}
}