Ir para conteúdo
Fórum Script Brasil
  • 0

Conversão de numeros Decimal para Romano


jhonantan_soad

Pergunta

Ola galera, eu to fazendo um trabalho, e tava com uma duvida.

É o seguinte tenho q fazer um programa q converta numeros para romanos, e romanos para numeros.

Uma parte eu fiz q é a parte de converter numeros para romanos,

mas só q tem um detalhe q eu não to consseguindo resolver, quando um numero igual o "9" ele é escrito assim IV

mas ai o programa mostra assim "VIIII", e todos q dependem do "9" e do "4" fikam desse geito.

alguém poderia me dar uma ajudinha.

Obrigado

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Ta ai o codigo fonte.

//Inicio de seraração das "casas"
while num>=1000 do
  begin
    m:=m+1;
    num:=num-1000;
  end;
while num>=500 do
  begin
    d:=d+1;
    num:=num-500;
  end;
while num>=100 do
  begin
    c:=c+1;
    num:=num-100;
  end;
while num>=50 do
  begin
    l:=l+1;
    num:=num-50;
  end;
while num>=10 do
  begin
    x:=x+1;
    num:=num-10;
  end;
while num>=5 do
  begin
    v:=v+1;
    num:=num-5;
  end;
while num>=1 do
  begin
    i:=i+1;
    num:=num-1;
  end;
// Término de seraração das "casas"

//Inicio de subistituição dos numeros para Romanos
for cont:=m downto 1 do
  begin
    _m:='M'+''+_m;
  end;

for cont:=d downto 1 do
  begin
    _d:='D'+''+_d;
  end;

for cont:=c downto 1 do
  begin
    _c:='C'+''+_c;
  end;

for cont:=l downto 1 do
  begin
    _l:='L'+''+_l;
  end;

for cont:=x downto 1 do
  begin
    _x:='X'+''+_x;
  end;

for cont:=v downto 1 do
  begin
    _v:='V'+''+_v;
  end;

for cont:=i downto 1 do
  begin
    _i:='I'+''+_i;
  end;
//Inicio de subistituição dos numeros para Romanos

//mostrando o resultado
edt_resp.Text:=(_m)+''+(_d)+''+(_c)+''+(_l)+''+(_x)+''+(_v)+''+(_i);
end;

Link para o comentário
Compartilhar em outros sites

  • 0

Converter Decimal para Romano

function DecimalToRomano(Decimal: Longint): string;
const
   Numeros: array[1..13] of Integer =
   (1, 4, 5, 9, 10, 40, 50, 90, 100,
   400, 500, 900, 1000);
   Romanos: array[1..13] of string =
   ('I', 'IV', 'V', 'IX', 'X', 'XL',
   'L', 'XC', 'C', 'CD', 'D', 'CM', 'M');
var
   i: Integer;
begin
   Result := '';
   for i := 13 downto 1 do
   while (Decimal >= Numeros[i]) do
      begin
         Decimal := Decimal - Numeros[i];
         Result := Result + Romanos[i];
   end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var s : string;
begin
   Label1.Caption := DecimalToRomano(StrToInt(Edit1.Text));
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
   if not (key in ['0'..'9',#8]) then
      abort;
end;

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...