Praca – Ankiety,Testy Sprawdzające
Kolejny zadanie to już Java. Treść jest następująca
okonać implementacji zamiany cyfr zapisanych w systemie dziesiętnym , na cyfry zapisane w systemie rzymskim.
- 1 – I;
- 2 – II;
- 3 – III;
- 4 – IV;
- itp, itd.
Treść tematu testu w języku angielskim
Implement a program which can take an integer and convert it into a Roman Numeral string.
e.g.1 = “I”
5 = “V”
19 = “XIX”
101 = “CI”
The function should be capable of converting every number between 1 and 3999.
Przeliczanie wg. mnie wygląda tak:
public static String evaluate(int value)
{
StringBuffer ret = new StringBuffer();
value = doThousands(value, ret);
value = doHundreds(value, ret);
value = doTens(value, ret);
doOnes(value, ret);
return ret.toString();
}
private static int doThousands(int value, StringBuffer buff)
{
int ret = value;
int subtract = 0;
while (value >= 900)
{
if(value >= 1000)
{
buff.append("M");
subtract += 1000;
value -= 1000;
}
else if(value >= 900)
{
buff.append("CM");
subtract += 900;
value -= 900;
}
}
return ret - subtract;
}
private static int doHundreds(int value, StringBuffer buff)
{
int ret = value;
int subtract = 0;
while (value >= 90)
{
if(value >= 500)
{
buff.append("D");
subtract += 500;
value -= 500;
}
else if(value >= 400)
{
buff.append("CD");
subtract += 400;
value -= 400;
}
else if(value >= 100)
{
buff.append("C");
subtract += 100;
value -= 100;
}
else if(value >= 90)
{
buff.append("XC");
subtract += 90;
value -= 90;
}
}
return ret - subtract;
}
private static int doTens(int value, StringBuffer buff)
{
int ret = value;
int subtract = 0;
while (value >= 9)
{
if(value >= 50)
{
buff.append("L");
subtract += 50;
value -= 50;
}
if(value >= 40)
{
buff.append("XL");
subtract += 40;
value -= 40;
}
else if(value >= 10)
{
buff.append("X");
subtract += 10;
value -= 10;
}
else if(value == 9)
{
buff.append("IX");
subtract += 9;
value -= 9;
}
}
return ret - subtract;
}
private static void doOnes(int value, StringBuffer buff)
{
while (value > 0)
{
if(value >= 5)
{
buff.append("V");
value -= 5;
}
else if(value == 4)
{
buff.append("IV");
value -= 4;
}
else if(value < 4)
{
buff.append("I");
value -= 1;
}
}
}
Jednak okazuje się ,że w tym fragmencie mam błąd.
Zamieszczony w: Praca - Zawsze Coś Nowego.