domingo, 9 de mayo de 2010

Verificación de Palindromos

Primero que nada hola.
A continuación explicare un programa que desarrolle para la clase de Taller de Programación con el Ing. Carlos Bernardo Treviño que sirve para verificar si una palabra o frase es un palindromo o no. También escribiré un algoritmo de como funciona el programa y explicare parte por parte lo que hace.

Explicación:

El programa lee un arreglo del tipo cadena de caracteres que se desea comprobar si es o no palindromo.Entonces se utiliza la función strlen de la librería string.h para conseguir el largo de la cadena,este se asigna a la variable n.Esta cadena se voltea y se asigna a otro arreglo.Al tenerlos simplemente al derecho y al revés no se puede comprobar simplemente en el programa, ya que los espacios y las mayúsculas( si las contiene) serian diferentes y aunque sea palindromo,el programa te diría que no.Por esto, se procede a omitir los parentesis. A continuación también se utiliza una función tolower (de la librería ctype.h) para cambiar las letras de los arreglos, de mayúsculas a minúsculas,por si tienen,para que pueda comprobar bien .

Tal vez tenga pasos que sean innecesarios como voltear la palabra,pero los considere importantes.Dentro del programa puse comentarios para explicar parte a parte el código.


.:Descargar:.


Algoritmo:


Donde n es el largo de la frase,i indica el inicio del arreglo,y pal y lap son cadenas de caracteres.

1. Primero se lee la palabra o frase,y esta se asigna a un arreglo del tipo caracter pal,cada letra de la cadena de caracteres se almacenara en una casilla de el arreglo pal.

2. Despues se procede a voltear la palabra asignando a la primera casilla del arreglo lap,la ultima letra del arreglo pal de la siguiente manera, lap[i]=pal[n],   lap[i+1]=pal[n-1],  etc.

3. Ahora se procede a eliminar los espacios,para esto se pasaran todos los caracteres del arreglo pal,exceptuando los espacios, a una variable pal0, y todos los caracteres del arreglo lap, a el arreglo lap0,de nuevo exceptuando los espacios.Con esto se obtiene de nuevo n, ya que sin espacios,cambiara su largo amenos que sea solamente una palabra.

5. A continuación se cambian todas las mayúsculas por minúsculas en ambos arreglos,para evitar confusiones.

4.Ya teniendo esto se procede a leer letra por letra cada arreglo repitiendo el siguiente proceso:pal0 empieza desde i y aumenta hasta n,y lap0 comienza desde n y disminuye hasta i,comparando si estos son iguales.Si todos los valores son iguales,se obtiene e=1. De otra manera si alguno no es igual,se obtiene e=0 y se termina la repetición.

5. Si e es igual a 1, la cadena de caracteres es un palindromo y se termina.De otra forma la frase no es un palindromo,y se termina.

Saludos.

2 comentarios: