Java – Zadania Testowe .Ciąg Dalszy

Praca – Ankiety,Testy Sprawdzające

webdesignKolejny zadanie to już Java. Treść jest następująca :Dokonać 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; } } }[/sourcecode]

 

Jednak okazuje się ,że w tym fragmencie mam błąd.

Skomentuj

Please log in using one of these methods to post your comment:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: