Escreva um programa para converter números inteiros, menores do que 4000 e escritos em algarismos arábicos, para romanos. Observação: evite escrever mais do que nove ifs. 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 um dicionário para armazenar as letras correspondentes a cada casa decimal.
Exemplo: 1666 corresponde a string MDCLXVI, onde:
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).
Exemplo: 1666 corresponde a string MDCLXVI, onde:
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
Ok, vamos lá! O exercício pede para criar um programa que converta números inteiros menores que 4000, escritos com algarismos arábicos, para números romanos. A gente vai trabalhar com programação, especificamente com comandos como
while
e estruturas de dados como strings ou dicionários. Vamos precisar entender como os números romanos funcionam e como a gente pode quebrar o número em suas partes (unidades, dezenas, centenas e milhares) para converter cada parte corretamente.Passo 2
Primeiro, vamos pensar em como dividir o número que queremos converter. Por exemplo, se tivermos o número 1666, ele pode ser dividido em milhares (1), centenas (6), dezenas (6) e unidades (6). Isso ajuda a converter cada parte separadamente para seu equivalente em números romanos. Para fazer isso, a gente pode usar um loop
while
que vai analisar cada casa decimal do número.Passo 3
Agora, precisamos de uma maneira de saber quais letras romanas correspondem a cada parte do número. Para isso, vamos usar um dicionário que mapeia valores arábicos para romanos. Por exemplo:
romanos = {
'unidades': ['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'],
'dezenas': ['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'],
'centenas': ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'],
'milhares': ['', 'M', 'MM', 'MMM']
}
Esse dicionário vai nos ajudar a pegar a parte correspondente do número e substituir pelo símbolo romano certo.
Passo 4
Agora, vamos implementar o loop
while
para processar cada casa decimal. A ideia é começar pela unidade, depois a dezena, a centena e finalmente os milhares. Em cada iteração do loop, a gente pega o último dígito do número, usa o dicionário para encontrar o símbolo romano correspondente e adiciona esse símbolo no início da nossa string final.Passo 5
Vamos juntar tudo e criar o programa completo. Primeiro, vamos inicializar algumas variáveis: a string que vai guardar o resultado final em romanos e uma variável temporária para o número que vamos converter. Depois, usamos o loop
while
para processar cada casa decimal, atualizando a string final a cada passo. Finalmente, exibimos o resultado.Resposta
Aqui está o programa completo em Python que faz a conversão de números inteiros menores que 4000 para números romanos:
def inteiro_para_romano(numero):
romanos = {
'unidades': ['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'],
'dezenas': ['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'],
'centenas': ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'],
'milhares': ['', 'M', 'MM', 'MMM']
}
resultado = ''
posicao = 0
while numero > 0:
digito = numero % 10
if posicao == 0:
resultado = romanos['unidades'][digito] + resultado
elif posicao == 1:
resultado = romanos['dezenas'][digito] + resultado
elif posicao == 2:
resultado = romanos['centenas'][digito] + resultado
elif posicao == 3:
resultado = romanos['milhares'][digito] + resultado
numero = numero // 10
posicao += 1
return resultado
# Exemplo de uso:
print(inteiro_para_romano(1666)) # Saída: MDCLXVI
Esse programa vai converter qualquer número inteiro menor que 4000 para o seu equivalente em números romanos, seguindo os passos que a gente explicou!