Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Anakin RIbeiro

Igualar caracteres maiusculos e minusculos.

Recommended Posts

Seguinte. Criei um algoritimo em que o usuario digita uma frase de até 10 caracteres e ao final o sistema deve informar quantos caracteres diferentes foram digitados.

Exemplo: Se for digitado "aaaaaaaaaa" o sistema deve informar q foi digitado 1 caracter. Se for digitado "abcdefghij" o sistema deve informar que foram digitados 10 caracteres diferentes.

Consegui fazer o algoritimo utilizando vetores e a tabela ASCII, onde cada caracter possui um numero decimal.

O Problema surge quando o usuario digita o mesmo caracter 2 ou mais vezes porém uma vez Maiuscula e uma vez minuscula.

Exemplo: Se for digitado a palavra "teste", o sistema ira mostrar que foram digitados 3 caracteres diferentes, porém se for digitado "Teste" ira mostrar que foram digitados 4 diferentes, pois na tabela ASCII o caracter "t" tem o código 116, e o caracter "T" o código 84.

Preciso fazer com que o algoritimo iguale o t minusculo e o T maiusculo. Alguém?

 

var
frase: caractere
vetQ: vetor [1..256] de inteiro
numASC, posfrase, resultado: inteiro
inicio
// Seção de Comandos 
repita
      leia(frase)
      se (compr(frase)=0) ou (compr(frase)>10) entao
         escreval ("ERRO:A frase deve ter no maximo 10 caracteres!")
      fimse
ate (compr(frase)>0) e (compr(frase)<=10)

para numASC de 32 ate 126 faca
     para posfrase de 1 ate compr(frase) faca
          se numASC = ASC (COPIA(frase,posfrase,1)) entao
             vetQ[numASC] <- (vetQ[numASC] + 1)
          fimse
     fimpara
fimpara

para numASC de 32 ate 126 faca
     se (vetQ[numASC] > 0 ) entao
        resultado <- resultado + 1
     fimse
fimpara
escreva("A frase contem",resultado," diferentes.")
fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu achei uma relação entre o número decimal de cada um, na tabela ASCII: toda letra minúscula possui sua maiúscula, 32 decimais à frente.

Tendo essa diferença em comum, o que podes fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites
var

frase: caractere

vetQ: vetor [1..256] de inteiro

numASC, posfrase, resultado: inteiro

inicio

// Seção de Comandos

repita

leia(frase)

se (compr(frase)=0) ou (compr(frase)>10) entao

escreval ("ERRO:A frase deve ter no maximo 10 caracteres!")

fimse

ate (compr(frase)>0) e (compr(frase)<=10)


para numASC de 32 ate 126 faca

para posfrase de 1 ate compr(maiusc(frase)) faca

se numASC = ASC (COPIA(frase,posfrase,1)) entao

vetQ[numASC] <- (vetQ[numASC] + 1)

fimse

fimpara

fimpara


para numASC de 32 ate 126 faca

se (vetQ[numASC] > 0 ) entao

resultado <- resultado + 1

fimse

fimpara

escreva("A frase contem",resultado," diferentes.")

Fimalgoritmo


---------------------------------------------------------------------------------------------

Funciono aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.