Como transformar algorismo romano (string) em decimal (int)?
Soluções para a tarefa
Respondido por
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
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
Biologia,
9 meses atrás
História,
9 meses atrás
Biologia,
9 meses atrás
História,
1 ano atrás
Matemática,
1 ano atrás