• Viernes 29 de Marzo de 2024, 10:21

Autor Tema:  Mayusculas Y Minusculas  (Leído 3655 veces)

Ander

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Mayusculas Y Minusculas
« en: Miércoles 26 de Marzo de 2008, 15:39 »
0
Hola, solo queria saber si hay alguna manera de comparar las mayusculas y las minusculas. Es decir, que ander=Ander sea True. Y si esto no es posible como se convierte una mayuscula en minuscula?

Un saludo!

gandalfelgris

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Re: Mayusculas Y Minusculas
« Respuesta #1 en: Jueves 27 de Marzo de 2008, 01:39 »
0
La unica forma que se me ocurre para lo que comentas es una comparación directa, teniendo en cuenta que cuando realizas una comparación directa entre caracteres se comparan los caracteres ascii, con lo cual lo que deberiamos averiguar es que caracter ascii se corresponde con la A y cual con la a para poderlos comparar. El caracter A es el ascii 65 y el caracter ascii a es el 97.

Espero haberte servido de ayuda.

A ver si te responde alguien más con otras ideas.

Suerte
gandalfelgris

Ander

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Mayusculas Y Minusculas
« Respuesta #2 en: Jueves 27 de Marzo de 2008, 12:47 »
0
Pero de esa manera tendria que comparar todas las letras del abecedario, no? para eso podria hacer un subprograma que fuera:
if X='A' then
return 'a';
elsif X='B' then
return 'b';
etc.

Y esto es un rollo.
Seguro que hay algo mas simple, he oido hablar de conversiones pero no se como se hacen. ;)

Itimag

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Mayusculas Y Minusculas
« Respuesta #3 en: Sábado 29 de Marzo de 2008, 19:16 »
0
Yo haría un array('a'..'z') de tipo character --> type alfabeto is array(1..26) of character; .
A partir de aquí, declaramos dos variables de este tipo: uno para las mayúsculas y otro para las minúsculas.

Es decir:
Mayusculas: alfabeto:=('a','b','c','d','e',...,'z');
Minusculas: alfabeto:=('A','B','C','D','E',...,'Z');

Ahora hacemos la  función que nos compara los carácteres:
Código: Text
  1.  
  2. funcion igual(A,B: in character) return boolean is
  3.      type alfabeto is array(1..26) of character;
  4.      mayusculas: alfabeto:=("abcdefghijklmnopqrstuvwxyz"); -- Es mas rápido escribirlo así.
  5.      minusculas: alfabeto:=("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
  6.  
  7.      I:integer:=1;
  8.      num_letra1,num_letra2:integer;
  9.  
  10. begin
  11.   while I<26 loop
  12.       if A=mayusculas(I) or A=minusculas(I) then
  13.            num_letra1:=I;
  14.       end if;
  15.       if B=mayusculas(I) or A=minusculas(I) then
  16.          num_letra2:=I;
  17.       end if;
  18.       I:=I+1;
  19.    end while;
  20.    if num_letra1 = num_letra_2 then
  21.        return true;
  22.    else
  23.        return false;
  24.    end if;
  25. end igual;
  26.  
  27.  

Creo que así funcionaria. No lo he probado. Es una función que pasados el carácter de la palabra 1 y el caracter de la palabra 2, te los compara y si son iguales te devuelve true, considerando como iguales A y a

De esta forma, si quieres comparar palabras, hacemos otra función que te devuelva si son iguales:

Código: Text
  1.  
  2. obtener_caracteres_palabras; -- Ej: caracter1:=caracter(I) en el caso de que lo tengamos en un array.
  3. Mientras no palabra1_acabada y no palabra2_acabada y igual(caracter1,caracter2) entonces
  4.   obtener_caracteres&#59;
  5. fin mientras;
  6. si palabra1_acabada=palabra2_acabada y ultimos_caracteres_palabras_iguales entonces
  7.    devolver true;
  8. sino
  9.    devolver false;
  10. fin si;
  11.  
  12.