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).

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.

Exercícios relacionados

Leia um arquivo entrada.txt e conte quantas vezes cada letra do alfabeto (independente de ser maiúscula ou minúscula) aparece. Grave o resultado em um arquivo saida.txt, com a letra e o número de ocorrências. O arquivo saída terá o formato, por exemplo:
A 13
B 28
Jogo da subtração. Seu algoritmo deverá ler uma variável positiva T e posteriormente mais três variáveis positivas e S 3 , sendo que estas variáveis são obrigatoriamente menores que T. O jogo consiste de dois jogadores, J1 e J2. A cada rodada a variável T é subtraída por uma das variáveis S1 ou S2 ou S3, escolhida pelo jogador da rodada. Perde o jogo quando o jogador ao executar sua subtração, obtém um valor menor do que zero. O seu programa deve apontar o jogador VENCEDOR.
Dado o seguinte sistema de equações lineares com determinante e Número de Condição :
Utilizando o método da Decomposição LU de Crout ou Doolittle, mostre como fica a Matriz L (triangular Inferior) a Matriz U (triangular superior), a solução y e a solução . Coloque os resultados na caixa de texto.
Em uma competição de ginástica, cada atleta recebe votos de sete jurados. A melhor e a pior nota são eliminadas. A sua nota fica sendo a média dos votos restantes. Você deve fazer um programa que receba o nome do ginasta e as notas dos sete jurados alcançadas pelo atleta em sua apresentação e depois informe a sua média, conforme a descrição acima informada (retirar o melhor e o pior salto e depois calcular a média com as notas restantes). As notas não são informados ordenadas. Um exemplo de saída do programa deve ser conforme o exemplo abaixo:
Atleta: Aparecido Parente
Nota: 9.9
Nota: 7.5
Nota: 9.5
Nota: 8.5
Nota: 9.0
Nota: 8.5
Nota: 9.7
Resultado final:
Atleta: Aparecido Parente
Melhor nota: 9.9
Pior nota: 7.5
Média: 9,04
Sugestão: usem o método max, min, pop de vetores para facilitar a resolução da questão