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