Informática, perguntado por Mings, 1 ano atrás

Como transformar algorismo romano (string) em decimal (int)?

Soluções para a tarefa

Respondido por bokomoko
0
primeiro você tem que criar um vetor de strings com os números romanos assim
I = 1
V = 5
X = 10
L = 50
C = 100
D = 500
M = 1000 
adicione a esse vetor no início um "0" zero, para ser o menor valor possível
então o vetor seria
0 = 0 
I = 1
V = 5
X = 10
L = 50
C = 100
D = 500
M = 1000
Lembre-se, não havia 0 em romanos, é só para facilitar o algoritmo
 
comece com o acumulador geral zerado, acumulador parcial zerado,   e a anterior = 0 (zero)
Aí você começa a varrer a string da esquerda para e direita
Pegue uma letra e veja se é igual a anterior. Se for igual pegue valor da letra (1, 5, 10, 50, 500 ou 1000) e some ao acumulador parcial 
Se a letra for maior que a anterior, subtraia do acumulador geral, o valor do acumulador parcial. Sete o  acumulador parcial (mudou de letra) para o valor da letra,  
se a letra for menor que a anterior, some ao acumulador geral, o valor do acumulador parcial. Sete o acumulador parcial para o valor da letra 

após o fim, adicione o valor parcial ao acumulador geral.

Ao final do loop que varreu a string terá o valor em decimal do número romano.

 Eis o código em Python usando dicionário, que facilita demais
https://repl.it/@bokomoko/De-romanos-para-decimal
Perguntas interessantes