string scriviNumeroMinoreMille(int a)
{
vector<string> v_zero_to_nineteen(20);
vector<string> v_twenty_to_ninety(8);
v_zero_to_nineteen = {"zero", "uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove", "dieci", "undici",
"dodici", "tredici", "quattordici", "quindici", "sedici", "diciassette", "diciotto", "diciannove"};
v_twenty_to_ninety = {"venti", "trenta", "quaranta", "cinquanta", "sessanta", "settanta", "ottanta", "novanta"};
string risultato;
if(a == 0)
{
return risultato = "";
}
else if(a < 20 && a > 0)
{
return risultato = v_zero_to_nineteen[a];
}
else if(a == 20 || a == 30 || a == 40 || a == 50 || a == 60 || a == 70 || a == 80 || a == 90)
{
return risultato = v_twenty_to_ninety[(a/10)-2];
}
else if(a == 100)
{
return risultato = "cento";
}
int unita = 0;
int decine = 0;
int centinaia = 0;
if(a > 99)
{
centinaia = a/100;
risultato += (v_zero_to_nineteen[centinaia]);
risultato += "cento";
}
if(a > 19)
{
if(a-(centinaia*100)%10 == 0)
{
decine = (a-(centinaia*100))/10;
risultato += (v_twenty_to_ninety[decine-2]);
}
else
{
decine = (a-(centinaia*100)/10);
risultato += v_twenty_to_ninety[decine-2];
unita = (a-(centinaia*100)-(decine*10));
risultato += v_zero_to_nineteen[unita];
}
}
return risultato;
}
この関数は、0から999までの数値をチェックして、文字列内の数値を変換するために作成しました。結果は、たとえば、入力が100の場合、出力は「100」になります(イタリア語に翻訳されます)。
これらの2つのif句内の引数をデバッグする理由がわかりません。
if(a > 99)
{
centinaia = a/100;
risultato += (v_zero_to_nineteen[centinaia]);
risultato += "cento";
}
if(a > 19)
{
if(a-(centinaia*100)%10 == 0)
{
decine = (a-(centinaia*100))/10;
risultato += (v_twenty_to_ninety[decine-2]);
}
else
{
decine = (a-(centinaia*100)/10);
risultato += v_twenty_to_ninety[decine-2];
unita = (a-(centinaia*100)-(decine*10));
risultato += v_zero_to_nineteen[unita];
}
}
関数では考慮されません。これらの2つのifはスキップされます。理由がわかりません。入力として123を入力すると、それらのifはスキップされます。しかし、条件はif(a> 99)、120は99以上です。わかりません。