Escreva um programa para converter números inteiros, menores do que 4000 e escritos em algarismos arábicos, para romanos. Obs: evite escrever mais do que nove
Dicas:
- A ideia é usar um comando while para analisar cada casa decimal e gerar os caracteres romanos diferentemente para cada iteração.
- Use uma string ou dicionários para armazenar as letras correspondentes a cada casa decimal.
Exemplo: 1666 corresponde a string as letras nas posições 5 e 6 correspondem às unidades (VI), as letras nas posições 3 e 4 correspondem às dezenas (LX), as letras nas posições 1 e 2 correspondem às centenas (DC), a letra na posição 0 corresponde aos milhares (M).
Dicas:
Exemplo: 1666 corresponde a string as letras nas posições 5 e 6 correspondem às unidades (VI), as letras nas posições 3 e 4 correspondem às dezenas (LX), as letras nas posições 1 e 2 correspondem às centenas (DC), a letra na posição 0 corresponde aos milhares (M).
Passo 1
Beleza, a gente tem um exercício que pede para criar um programa que converta números inteiros menores que 4000, escritos com algarismos arábicos, para algarismos romanos. A matéria envolvida aqui é a manipulação de números e a lógica de programação para fazer essa conversão. Vamos precisar usar um loop (como o
while
) para analisar cada casa decimal do número e um dicionário para mapear os valores arábicos para os romanos.Passo 2
Primeiro, vamos entender como os números romanos funcionam. Eles usam letras específicas para representar valores:
- I = 1
- V = 5
- X = 10
- L = 50
- C = 100
- D = 500
- M = 1000
Além disso, para números como 4 ou 9, usamos uma combinação das letras menores antes das maiores (por exemplo, IV = 4 e IX = 9).
Passo 3
Vamos criar dicionários que mapeiam unidades, dezenas, centenas e milhares para seus equivalentes romanos. Assim, para cada posição (unidades, dezenas, etc.), temos as possíveis combinações:
milhares = ["", "M", "MM", "MMM"]
centenas = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"]
dezenas = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"]
unidades = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"]
Passo 4
Agora, vamos criar a função que recebe um número inteiro e converte para romano. A ideia é separar o número em milhares, centenas, dezenas e unidades, e então usar os dicionários para encontrar a representação romana de cada parte.
Passo 5
Dentro da função, vamos usar um
while
para processar cada casa decimal. A cada iteração, extraímos o dígito correspondente e o mapeamos usando o dicionário adequado.Passo 6
Vamos juntar todas as partes romanas para formar o número completo em algarismos romanos. Por exemplo, para o número 1666:
- M (1000)
- DC (600)
- LX (60)
- VI (6)
Juntando tudo, temos MDCLXVI.
Resposta
Abaixo está o programa completo em Python que realiza a conversão:
def numero_para_romano(num):
milhares = ["", "M", "MM", "MMM"]
centenas = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"]
dezenas = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"]
unidades = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"]
m = milhares[num // 1000]
c = centenas[(num % 1000) // 100]
d = dezenas[(num % 100) // 10]
u = unidades[num % 10]
return m + c + d + u
# Exemplo de uso:
numero = 1666
print(numero_para_romano(numero)) # Saída: MDCLXVI
Esse programa divide o número em milhares, centenas, dezenas e unidades, mapeia cada parte para o numeral romano correspondente e concatena as strings para formar o número final em algarismos romanos.