Ir ao conteúdo
  • Cadastre-se

Rpa007

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

posts postados por Rpa007

  1. Olá pessoal. Tenho que fazer um exercício como descrito no título, que converta números romanos em decimal, usando a linguagem Pascal.

    Assuntos que já vi: Manipulando Strings, REPEAT, FOR, WHILE, CASE e IF.

    Sei que o maior número possível a ser formado será 3999 (MMMCMXCIX), que tem 9 caracteres.

    Creio que a chave do programa está em conseguir definir quando terei que subtrair ou somar tal valor. Ex: IV = 4 e VI = 6, XC = 90 e CX = 110.

    A posição e a quantidade de caracteres é o que define, pelo que entendi.

    Dúvidas:

    1) Lógica: será isso mesmo de verificar o tamanho do algarismo, e fazer:

     
    IF length(algarismo) = 1 then WRITELN('O algarismo é...) ~ continuação ~~
    ELSE
     Begin
            IF length(algarismo) = 2 then
                      Begin
                            IF algarismo[2] > algarismo[1] then algarismo := algarismo[2] - algarismo[1] ELSE algarismo := algarismo [1] - algarismo [2]
    
    ...

    (no caso, será apenas 1, 5, 10, 50, 100, 500, 1000 os valores possíveis, já que são os únicos de 1 algarismo.)

    O "algarismo[1]" seleciona a primeira letra da variável algarismo, que foi definida como uma string. Da mesma forma o [2].

    2)

     
      Begin
     	writeln('Digite o número em algarismos romanos:');
     	readln(alg);
    
     	M := 1000;
     	D := 500;
     	I := 1;
    	V := 5;
    	X := 10;
    	L := 50;
    	C := 100;
    
     	IF length(alg) = 1 then writeln('O número em decimal é ',alg,'.'); 
      readln;		
     End. 

    No código acima, o valor continua sendo exibido em romano (ou seja, ele exibe o mesmo valor que eu digitei.) Como faço para passar a valer o valor em decimal? Ex: Digitei X, é para mostrar 10, porém programa ainda mostra X.

    3) Há alguma lógica que funcione melhor para este programa, com os assuntos que eu aprendi?

    Desculpem-me pelo grande número de perguntas, porém não achei nenhum tópico com dúvidas parecidas.

    Desde já, agradeço.

    ___

    Tabela com alguns números, para consulta:

    roman_numerals_complete.jpg

    • Curtir 1

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!