Jump to content
irwingato

Crie um algoritmo que receba do usuário um número romano e converta em arábico

Recommended Posts

Var
   // Seção de Declarações das variáveis
   romano:caractere
   subtexto :caractere
   i:inteiro
   letra1:caractere


Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   escreval("Digite um número em romano para ser convertido em arábico")
   escreval("menor que 4000 e maior que 0")
   leia(romano)
   para i de 1 ate Compr(romano) faca
      subtexto <- Copia(romano,i,1)

      escreval(subTexto)

      fimpara

Consegui fazer somente isso, o problema está na hora de salvar letra por letra num vetor e saber a posição de cada letra pois se for uma letra menor que a posterior subtrai-se um exemplo é o X antes de C subtrai-se 10 ficando 90 e quando o C vale 100 e quando vem antes de um número maior que ele um exemplo é D ficando 400, acho que somente a letra I, X, C, subtraem-se se estiver antes de um número maior o resto soma-se, o problema está em saber a posição da letra.

Alguém  tem alguma ideia?

Acho que sei como finalmente fazer primeiramente eu pegaria o valor em romano digitado, pegaria o tamanho da letra valor atribuído seria n tamanho da letra e desse tamanho da letra tiraria n-1, depois tentaria dividir a letra, não sei o comando no VisualG para separar as letras e criaria um variável para armazenar o separamento dessas letras nesse caso separador criaria outra variável nesse caso s e receberia zero depois faria um para onde i =0 e i tem que ser menor que o tamanho da letra nessa e iria somando por +1 depois abriria um se verificando se a divisão da letras separador = "M" então s= s+1000 e dentro desse se abriria outro se  e se se separador[i-1]= "C" então s= s-200, terminaria esse se depois abriria outro se verificando se separador = "D" então s=s+500 e dentro abriria outro se e se separador[i-1] = "C" então s=s-200 depois fecharia esse se e abriria outro se separador = "C" então s=s+100 e dentro desse se abriria outro se se separador[i-1] = "X" e então s=s-20 depois terminaria esse se e abriria outro se, se separador = "L" então s=s+50 dentro abriria outro se, se separador[i-1] = "X" então

s=s-20 depois terminaria esse se e abriria outro se, se separador="X" então s=s+10 abriria outro se, se separador[i-1] = "I" então s=s-2 depois fecharia esse se depois abriria outro se, se separador="V" então s=s+5 e dentro desse se abriria outro se, se separador[i-1] = "I" então s=s-2 fecharia esse se depois abriria outro se se separador = "I" então s=s+1

depois daria um escreval(s)

O problema está na hora de separar as letras qual o comando no VisualG para separar letra ou não tem?

O comando copia é útil somente se separar letra por letra porém falha na hora, por exemplo de copiar um número romano, eu eu tenho que já passar esse comando com parâmetros já pré-deficinidos copie desta casa até esta casa (romano;1;2), que no não teria como colocar todos os parâmetros para todos os números de 1 a 3999

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Fernando Cavaccini
      Boa noite pessoal, estou criando um algoritmo no Visualg, que é para um usuário que está construindo uma casa, porém em uma parte, é necessário dividir a área interna da casa em partes iguais, mas não sei como posso fazer isso, se alguém pudesse dar uma dica. Obrigado desde já.
    • By Amanda Sprouse
      Olá, sou nova na programação e ainda estou trabalhando só com o visualg. Então relevem qualquer coisa, por favor.
       
      Bom... Meu professor pediu para fazermos um programa no visualg que escrevesse de 0 até 100 por extenso.
       
      Tem algumas restrições só podemos usar:
      Se; fimse;
      Escreva; leia;
      <-
       
      •Não pode usar vetores e isso complicou muito.
      •Não pode ser (todo) assim: se (numero=45) enato
      escreva("Quarenta e cinco"), porque isso ia gastar muitas linhas. 
       
      Ele deu uma dica de como fazer: 
       
      Var:
      Unidaden: inteiro
      Unidadec: caractere
      Dezena: caractere
      Numero: inteiro
      Inicio:
      escreva ("Digite um número e tecle enter: )
      leia (numero)
      Se (numero>20) e (numero<30) entao
      escreva ("Vinte e ", ???)
       
       
    • By Luan cinco
      Olá, gostaria que vocês pudessem me ajudar a desenvolver e com resolução esses exercícios aqui,  estou quebrando a cabeça e não consigo chegar em nadaaa, obrigado!!! 
       
      Primeiro exercício 
       
      1-Leia um valor inteiro entre 1000 e 9999 e verifique se o número formado apenas pelos algarismos que estão nas casas das unidades de milhar e das centenas é ou não múltiplo de 4.
       
      Segundo " "
       
      2- Numa loja de eletrodomésticos, o vendedor encarregado da seção de televisores recebe, mensalmente, um salário fixo mais comissão. Esta comissão é calculada em relação ao tipo e a quantidade de televisores vendidos por mês, obedecendo a seguinte tabela: Sobre o seu salário fixo há um desconto de 10% referente ao INSS. Caso o seu salário bruto exceda a R$ 1500,00 haverá desconto de imposto de renda, conforme a segunda a tabela ao lado, aplicada sobre o valor excedente a R$ 1500,00.  Calcule: a comissão do funcionário, o salário bruto, os valores de cada desconto, o total dos descontos e o salário líquido.
       

       
      Terceiro  " "
       
      Escreva um algoritmo que leia o valor de 3 ângulos de um triângulo e escreva se o triângulo é retângulo, obtusângulo ou acutângulo. A saber, o triângulo retângulo possui um ângulo reto, o triângulo obtusângulo possui um ângulo obtuso, e o triângulo acutângulo possui 3 ângulos agudos.
       
      Quarto 
       
      No Campeonato Mundial de Cross Fit o atleta deve pesar entre 65 Kg (inclusive) e 100 Kg (inclusive) e medir de 1,70 m (inclusive) a 1,95 m (inclusive). Escrever um algoritmo para ler a altura e o peso de um jogador e determinar se o jogador está apto a participar do campeonato, escrevendo a mensagem correta, conforme a situação:
      • ACEITO (se a altura e o peso do jogador estiverem dentro da faixa especificada)
      • TOTALMENTE RECUSADO (se a altura e o peso do jogador forem inválidos)
      • RECUSADO POR ALTURA (se somente a altura do jogador for inválida) • RECUSADO POR PESO (se somente o peso do jogador for inválido)
    • By jinxx
      Gente alguém pode me da uma luz nesse algoritmo? como eu resolvo isso pelo menos? Tentei utilizar o comando arquivo <> no visualg, mas não da certo. 
       
      Você decidiu comprar um carro e para ajudar na sua decisão, você resolveu desenvolver um código que mostre ao final qual é o menor custo ao final de ano para cada modelo escolhido baseado no custo total de compra do carro, custo com impostos, custo com combustível (considerando o consumo médio de cada veículo e um total estimado de 10.000 Km rodados no ano e o valor de médio R$ 3,98 para o litro de combustível) e custos com seguro.
      Como dados de entrada você pode criar um arquivo que contenha as seguintes informações que serão carregadas no programa.
      Modelo do veículo
      Custo total de compra
      Custo total de impostos
      Consumo médio de combustível (Km/l)
      Custos com seguro
      Chevrolet Ônix
      R$36.000,00
      R$1.400,00
      11,8
      R$1.600,00
      Ford Fiesta
      R$32.000,00
      R$1.300,00
      13,5
      R$1.800,00
      VW Fox
      R$31.000,00
      R$1.450,00
      12,3
      R$1.300,00
      VW Polo
      R$41.000,00
      R$1.600,00
      13,5
      R$1.500,00
      Hyundai HB20
      R$40.000,00
      R$1.200,00
      11,6
      R$1.200,00
      Renault Sandero
      R$30.000,00
      R$1.300,00
      12,8
      R$1.900,00
      Ao final o programa deverá mostrar os dados apresentados na tabela para cada veículo e o custo total no final de um ano para cada um deles.
    • By Felipe_2k19
      Olá galera tudo beleza?
       Eu estou tentando resolver um problema no visualg, usando Portugol porém eu não sei aplicar algumas coisas que são pedidas no mesmo.
      Problema: Dado um número, informar se é par ou ímpar. Se for par somar 5 no número informado e se for  ímpar multiplicar por 3 o número informado.
      Eu fiz a parte em que ele fala se o número e par ou ímpar, mas não sei fazer a parte da soma e a multiplicação alguém pode me ajudar?
      ALGORITMO:
      Var n:inteiro inicio escreval("Insira um número inteiro") leia (n) se (n mod2=0) entao escreval ("O número é par") senao escreval("O número é impar") fimse Fimalgoritmo  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.