Escreva um programa para converter números escritos em algarismos romanos (menores que 4000) para arábicos.

Passo 1

Beleza, vamos lá! O que esse exercício pede é para criar um programa que converta números romanos em números arábicos, mas só até 3999. Isso envolve programação e um pouco de conhecimento sobre os algarismos romanos. Para resolver isso, vamos precisar entender como os números romanos funcionam e depois pensar em como transformar isso em código que faça essa conversão automáticamente.

Passo 2

Primeiro, vamos dar uma olhada nos símbolos básicos dos números romanos e seus valores:
  • I vale 1
  • V vale 5
  • X vale 10
  • L vale 50
  • C vale 100
  • D vale 500
  • M vale 1000
Essa é a base para entender os números romanos.

Passo 3

Agora, precisamos entender que os números romanos combinam esses símbolos para formar outros números. Geralmente, somamos os valores dos símbolos da esquerda para a direita. Por exemplo:
  • III = 1 + 1 + 1 = 3
  • VIII = 5 + 1 + 1 + 1 = 8
Mas tem uma regrinha especial: quando um símbolo de menor valor vem antes de um de maior valor, em vez de somar, a gente subtrai. Por exemplo:
  • IV = 5 - 1 = 4
  • IX = 10 - 1 = 9
Esses são chamados de “números de subtração”.

Passo 4

Com isso em mente, para converter um número romano para arábico, podemos seguir esta lógica:
  1. Percorrer cada símbolo do número romano da esquerda para a direita.
  2. Comparar o valor do símbolo atual com o valor do próximo símbolo.
    • Se o valor atual for menor que o próximo, subtrai esse valor.
    • Se for igual ou maior, soma esse valor.
  3. Repetir até o final do número romano para obter o valor arábico correspondente.

Passo 5

Vamos ver um exemplo para clarear:
Considere o número romano MCMIV.
  • M = 1000
  • C = 100
  • M = 1000
  • I = 1
  • V = 5
Aplicando a regra:
  • M (1000) seguido de C (100): 1000 >= 100, então soma 1000.
  • C (100) seguido de M (1000): 100 < 1000, então subtrai 100.
  • M (1000) seguido de I (1): 1000 >= 1, então soma 1000.
  • I (1) seguido de V (5): 1 < 5, então subtrai 1.
  • V (5): último símbolo, soma 5.
Total: 1000 - 100 + 1000 - 1 + 5 = 1904

Passo 6

Agora, pensando em programação, vamos precisar de:
  • Um dicionário (ou mapa) que associe cada símbolo romano ao seu valor arábico.
  • Uma maneira de percorrer cada símbolo do número romano.
  • Aplicar a regra de subtrair ou somar com base na comparação entre símbolos adjacentes.
Além disso, precisamos garantir que o programa trate apenas números romanos válidos e dentro do limite especificado (menores que 4000).

Passo 7

Vamos resumir os passos para o programa:
  1. Criar um dicionário com os valores dos símbolos romanos.
  2. Percorrer o número romano da esquerda para a direita.
  3. Comparar o valor de cada símbolo com o próximo.
    • Se o atual for menor que o próximo, subtrair o valor atual.
    • Caso contrário, somar o valor atual.
  4. Acumular o resultado conforme percorre todo o número.
  5. Retornar o valor arábico final.

Resposta

Seguindo esses passos, conseguimos criar um programa que converte números romanos em arábicos de forma correta e eficiente!

Exercícios relacionados

Leia um arquivo entrada.txt e troque todas as letras minúsculas por maiúsculas e vice-versa. Grave o resultado em um arquivo saida.txt.
Implemente a função area_triangulo(matriz). O parâmetro matriz é uma matriz que contém as coordenadas x e y do pontos do triângulo. Utilize fórmula de Heron para calcular a área.
Onde é o semiperímetro do triângulo e a, b e c são os comprimento dos lados do triângulo.
Considere alguma sequência de elementos (difere de um mero conjunto de elementos por definir uma ordem entre os seus membros). Enumere, então, todas as subsequências não contínuas de uma dada sequência.
Dicas:
  • Uma subsequência sempre contém algum subconjunto de elementos da sequência, na mesma ordem.
  • Uma subsequência contínua é aquela em que nenhum elemento está faltando, entre o primeiro e o último elemento da subsequência.
    Exemplo:
Jogo da memória com 18 blocos. Crie um vetor com 18 posições, numeradas de 0 a 9 e 0 a 9 novamente. Misture estas posições. Crie um vetor de 18 posições com valores boleanos setados como False. Preencha uma numeração bem formatada de 0 a 17 no topo da tela e logo abaixo dela preencha com asteriscos, um para cada posição. O jogador então escolherá duas posições, de 0 a 17. Caso os números sejam idênticos, o a posição de valores booleanos será setada para True e a posição descoberta na próxima rodada. O jogo termina quando todas as posições forem reveladas. Forneça ao usuário o número de rodadas necessárias para completar o jogo.