Compartir entrada

lunes, 10 de junio de 2013

Ejercicio de C: Palabras palíndromas

Un ejercicio bastante común en C en los temas de tratamientos de cadena suele ser el de averiguar si una palabra es palíndrome o no.

Ejercicio de C: Palabras palíndromas
Foto tomada de freedigitalphotos.net

Una palabra es palíndrome si se lee de la misma forma en un sentido u otro, para el caso de los números se les llama número capicúa.

Un ejercicio en C suele ser que dada una palabra por teclado se averigüe si es palíndrome o no. A continuación os dejo el código del programa que hace tal función.

# include <stdio.h>
# include <conio.h>
# include <math.h>
# include <string.h>
int main(){

     char pal[40],pal2[40];
     int n,x,a=0,p=0,e=0,u;
     char b=' ';
   
     printf("Introduzca una palabra:");
     gets(pal);
     n=strlen(pal);
   
     for (u=0;u<=n;u++)
    {
      if (pal[u]==b)
      {
    u++;
      }
      pal2[e]=pal[u];
      e++;
     }
   
    x=0;
    n=strlen(pal2);
 
    for (x=n-1;x>=0;x--)
    {
     if (pal2[x]==pal2[a])
     {
         p++;
     }
     a++;
    }
 
    if (p==n)
      printf("\n\nLa palabra es palindrome  \n\n");
    else
      printf ("\n\nLa palabra no es palindrome \n\n");
 
    system("PAUSE");
    return 0;
}

¿Cómo mejorarías el ejercicio?

4 comentarios:

  1. Seria mucho pedirte que me explicaras linea por linea?

    ResponderEliminar
  2. aquí desarrolle uno y lo explico detalladamente para quien le sirva

    //Desarrolle un programa en lenguaje C que determine si la palabra es palindroma
    //Desarrollado por ALIED MARTINEZ
    #include


    void main(void){

    // declaro aqui la palabra aproximadamente de 20 caracteres
    char palabra[20];
    // tam para determinar el tamaño de la palabra con la funcion strlen
    // i y la j son dos variables de control del ciclo for para realizar la comparacion
    // ct es un contador creada para compararla con tam si es del mismo tamaño
    // comp variable que se le asigna el tamaño de la variable tam para no perderla cuando se decremente
    int tam=0,i,j,ct=0,comp=0;

    //solicito la palabra por teclado
    printf("Ingrese una palabra\n");
    //leo la palabra por el teclado
    scanf("%s",palabra);

    // tam con la funcion determino el tamaño de la palabra
    tam=strlen(palabra);
    // comp asume el tamaño para ser comparada mas adelante
    comp=tam;

    //inicializo i en cero y j la inicializo con el tamaño final de la palabra y le coloque el
    //menos 1 para evitar el caracter null de la cadena string que posee al final y asi
    // poder iniciar desde la ultima letra de la palabra luego
    //estableci la condicion del bucle menor a tam y
    //finalmente a i la incremento para que empiece por la primera letra de la palabra y
    // a j la decremente para que empiece por la ultima letra de la palabra
    for(i=0,j=tam-1 ; i<tam ; i++,j--){


    // y aqui comparo la primera letra de la palabra con la ultima
    if (palabra[i]==palabra[j])

    // aqui cuento si todas las letras son iguales las cuento
    // de manera que si el tamaño de este contador es igual a al tamaño
    //de comp es palindroma
    ct++;

    }

    // aqui fuera del bucle for realizo la comparacion
    // para despues mostrarle al usuario por pantalla si es o no palindroma la determinada palabra
    if (comp==ct)
    printf("La palabra %s es Palindroma\n",palabra);
    else
    printf("La palabra %s No es Palindroma\n",palabra);



    }

    ResponderEliminar
  3. recuerden colocarle la libreria lo copian y lo pegan en cualquier compilador les recomiendo el DEV c++ y listo

    ResponderEliminar
  4. como se haria si en ves de una palabra pide una oracion y que muestre cada palabra de dicha oracion una abajo de la otra y que muestre si hay palabras palindroma

    ResponderEliminar

 
Google+