Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
Carregando comentários...