jhonantan_soad Postado Setembro 30, 2009 Denunciar Share Postado Setembro 30, 2009 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 IVmas 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Victor_DF Postado Setembro 30, 2009 Denunciar Share Postado Setembro 30, 2009 Posta o código que você ta usando pra facilitar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jhonantan_soad Postado Setembro 30, 2009 Autor Denunciar Share Postado Setembro 30, 2009 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; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Outubro 3, 2009 Denunciar Share Postado Outubro 3, 2009 Converter Decimal para Romanofunction 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
jhonantan_soad
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
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.