Írjunk programot, amely az arab számokat alakítja át római számokká függvénnyel.
A római számokban felhasznált betűk az I V X L C D M a latin ábécéből származnak.
Szám Római szám
---------------------------------
1 I
4 IV
5 V
9 IX
10 X
40 XL
50 L
90 XC
100 C
400 CD
500 D
900 CM
1000 M
A legnagyobb római szám 3999 római számokkal: MMMCMXCIX.
A római számokat ma is használják:
- Budapest kerületeinek jelzésére pl. XI. kerület.
- régi épületek építési évének jelzésére.
- fejezet sorszámozására,
- uralkodók sorszámozására.
A feladat megoldása:
// RómaiSzámok függvény
static void RómaiSzámok(int szám, out string római_szám)
{
int ezer, száz, tizes, egyes, i;
római_szám = "";
if (szám <= 3999 && szám > 0)
{
ezer = szám / 1000;
switch (ezer)
{
case 1: római_szám += "M"; break;
case 2: római_szám += "MM"; break;
case 3: római_szám += "MMM"; break;
}
szám %= 1000;
if (szám <= 999 && szám > 0)
{
száz = szám / 100;
if (száz == 9)
római_szám += "CM";
else if (száz >= 5)
{
római_szám += "D";
száz -= 5;
}
if (száz == 4)
római_szám += "CD";
if (száz <= 3)
{
for (i = 1; i <= száz; i++)
római_szám += "C";
}
szám %= 100;
if (szám > 0 && szám <= 99)
{
tizes = szám / 10;
if (tizes == 9)
római_szám += "XC";
else if (tizes >= 5)
{
római_szám += "L";
tizes -= 5;
}
if (tizes == 4)
római_szám += "XL";
if (tizes > 0 && tizes <= 3)
{
for (i = 1; i <= tizes; i++)
római_szám += "X";
}
szám %= 10;
if (szám > 0)
{
egyes = szám;
switch (egyes)
{
case 1: római_szám += "I";
break;
case 2: római_szám += "II";
break;
case 3: római_szám += "III";
break;
case 4: római_szám += "IV";
break;
case 5: római_szám += "V";
break;
case 6: római_szám += "VI";
break;
case 7: római_szám += "VII";
break;
case 8: római_szám += "VIII";
break;
case 9: római_szám += "IX";
break;
}
}
}
}
}
}
private void Konvertálás_Click(object sender, EventArgs e)
{
string római_szám;
int szám;
if (textBox1.Text != "")
{
szám = Int32.Parse(textBox1.Text);
if (szám <= 0 || szám > 3999)
{
MessageBox.Show(
" A szám nincs a 1-3999 határ között!",
"Hibajelzés");
textBox1.Text = "";
}
RómaiSzámok(szám, out római_szám);
textBox2.Text = római_szám;
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox2.Text = "";
}
A program futási eredményei: