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,则结果将是“一百”(它被翻译成意大利语)
我不明白为什么要调试这两个 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];
}
}
函数中不考虑。这两个 if 只是被跳过。我不明白为什么。如果我将 123 作为输入,则跳过这些 if。但是条件是 if(a > 99), 120 大于 99。我不明白。