Usuário com melhor resposta
Problemas na função para converter ints em numeração romana

Pergunta
-
string romana (double n) { int unidades, centenas, dezenas; String nr = String.Empty; //criação das variaveis centenas = (int)(n / 100); n = n - centenas * 100; // calcular e tirar centenas do numero dezenas = (int)n * 10; n = n - dezenas * 10; //calcuar e tirar dezenas do numero unidades = Convert.ToInt32(n); //unidades switch (centenas) { case 1: nr = "C"; break; case 2: nr = "CC"; break; case 3: nr = "CCC"; break; case 4: nr = "CD"; break; case 5: nr = "D"; break; } switch (dezenas) { case 1: nr = nr + "X"; break; case 2: nr = nr + "XX"; break; case 3: nr = nr + "XXX"; break; case 4: nr = nr + "XL"; break; case 5: nr = nr + "L"; break; case 6: nr = nr + "LX"; break; case 7: nr = nr + "LXX"; break; case 8: nr = nr + "LXXX"; break; case 9: nr = nr + "XC"; break; } switch (unidades) { case 1: nr = nr + "I"; break; case 2: nr = nr + "II"; break; case 3: nr = nr + "III"; break; case 4: nr = nr + "IV"; break; case 5: nr = nr + "V"; break; case 6: nr = nr + "VI"; break; case 7: nr = nr + "VII"; break; case 8: nr = nr + "VIII"; break; case 9: nr = nr + "IX"; break; } return nr; }
Desenvolvi uma função para devolver o número inserido pelo utilizador em númeração romana, no entanto apenas devolve as centenas- Editado joanaf7 quinta-feira, 20 de setembro de 2018 15:44
Respostas
-
Olá programador,
Tente o seguinte usando StringBuilder:
StringBuilder = new StringBuilder(""); //Variável global. Importa System.Text.
private string ConverterRomano(double n)
{
int unidades, centenas, dezenas; //criação das variaveis
centenas = (int)(n / 100);
dezenas = ((int)n - ((centenas * 100))) / 10; //calcuar e tirar dezenas do numero
unidades = (int)n - ((centenas * 100) + (dezenas * 10)); //unidades
switch (centenas)
{
case 1: nr.Append("C"); break;
case 2: nr.Append("CC"); break;
case 3: nr.Append("CCC"); break;
case 4: nr.Append("CD"); break;
case 5: nr.Append("D"); break;
}
switch (dezenas)
{
case 1: nr.Append("X"); break;
case 2: nr.Append("XX"); break;
case 3: nr.Append("XXX"); break;
case 4: nr.Append("XL"); break;
case 5: nr.Append("L"); break;
case 6: nr.Append("LX"); break;
case 7: nr.Append("LXX"); break;
case 8: nr.Append("LXXX"); break;
case 9: nr.Append("XC"); break;
}
switch (unidades)
{
case 1: nr.Append("I"); break;
case 2: nr.Append("II"); break;
case 3: nr.Append("III"); break;
case 4: nr.Append("IV"); break;
case 5: nr.Append("V"); break;
case 6: nr.Append("VI"); break;
case 7: nr.Append("VII"); break;
case 8: nr.Append("VIII"); break;
case 9: nr.Append("IX"); break;
}
return nr.ToString();
}Se te ajudou, marque a resposta.
- Sugerido como Resposta Timóteo Nkawa quinta-feira, 20 de setembro de 2018 16:14
- Marcado como Resposta Levi DomingosModerator sábado, 22 de setembro de 2018 20:57
-
Boa tarde,
joanaf7, experimente alterar a linha onde é calculada a dezena:
dezenas = (int)n / 10;
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Levi DomingosModerator sábado, 22 de setembro de 2018 20:56
Todas as Respostas
-
Olá programador,
Tente o seguinte usando StringBuilder:
StringBuilder = new StringBuilder(""); //Variável global. Importa System.Text.
private string ConverterRomano(double n)
{
int unidades, centenas, dezenas; //criação das variaveis
centenas = (int)(n / 100);
dezenas = ((int)n - ((centenas * 100))) / 10; //calcuar e tirar dezenas do numero
unidades = (int)n - ((centenas * 100) + (dezenas * 10)); //unidades
switch (centenas)
{
case 1: nr.Append("C"); break;
case 2: nr.Append("CC"); break;
case 3: nr.Append("CCC"); break;
case 4: nr.Append("CD"); break;
case 5: nr.Append("D"); break;
}
switch (dezenas)
{
case 1: nr.Append("X"); break;
case 2: nr.Append("XX"); break;
case 3: nr.Append("XXX"); break;
case 4: nr.Append("XL"); break;
case 5: nr.Append("L"); break;
case 6: nr.Append("LX"); break;
case 7: nr.Append("LXX"); break;
case 8: nr.Append("LXXX"); break;
case 9: nr.Append("XC"); break;
}
switch (unidades)
{
case 1: nr.Append("I"); break;
case 2: nr.Append("II"); break;
case 3: nr.Append("III"); break;
case 4: nr.Append("IV"); break;
case 5: nr.Append("V"); break;
case 6: nr.Append("VI"); break;
case 7: nr.Append("VII"); break;
case 8: nr.Append("VIII"); break;
case 9: nr.Append("IX"); break;
}
return nr.ToString();
}Se te ajudou, marque a resposta.
- Sugerido como Resposta Timóteo Nkawa quinta-feira, 20 de setembro de 2018 16:14
- Marcado como Resposta Levi DomingosModerator sábado, 22 de setembro de 2018 20:57
-
Boa tarde,
joanaf7, experimente alterar a linha onde é calculada a dezena:
dezenas = (int)n / 10;
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Levi DomingosModerator sábado, 22 de setembro de 2018 20:56