Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Programa anagramas en C

Estas en el tema de Programa anagramas en C en el foro de C/C++ en Foros del Web. Hola a todos ¿Alguien sabría como construir la función que compararia dos palabras y dijera si ambas palabras son o no son anagramas? Un anagrama ...
  #1 (permalink)  
Antiguo 24/01/2010, 18:04
 
Fecha de Ingreso: diciembre-2009
Mensajes: 6
Antigüedad: 14 años, 4 meses
Puntos: 0
De acuerdo Programa anagramas en C

Hola a todos

¿Alguien sabría como construir la función que compararia dos palabras y dijera si ambas palabras son o no son anagramas? Un anagrama es
una palabra que resulta de la trasposición de las letras de otra frase. Ejemplo: monja - jamon o argentino - ignorante.

Me interesa que sea en programación C

Yo tengo hecho esto pero no me funciona porque creo que me falla algo

Código:
int anagrama(char palabra1[], char palabra2[])
{
  int i,j;
 
  j=0;
 
  if(strlen(palabra1) == strlen(palabra2))
  {
    for(i=0; i<strlen(palabra1); i++)
    {
      if(palabra1[i] == palabra2[j])
      {
       j++;
       return 1;
      }
      else
      return 0;
    }
  }
}
Muchas gracias !!
  #2 (permalink)  
Antiguo 25/01/2010, 03:26
 
Fecha de Ingreso: enero-2010
Mensajes: 24
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Programa anagramas en C

Aqui tienes un codigo que funciona

Código C:
Ver original
  1. int anagrama (char *cad1, char *cad2)
  2. {
  3.   int i, j, num_aciertos=0;
  4.   char cad_aux[10];
  5.  
  6.   memset (cad_aux, 0, sizeof(cad_aux));
  7.  
  8.   strcpy (cad_aux, cad2);
  9.  
  10.   if (strlen(cad1) != strlen (cad2))
  11.     return 1;
  12.  
  13.   for (i=0; i<strlen(cad1); i++)
  14.   {
  15.     for (j=0; j<strlen(cad_aux); j++)
  16.     {
  17.       if (cad1[i] == cad_aux[j])
  18.       {
  19.         cad_aux[j] = '#';
  20.         num_aciertos++;
  21.       }
  22.     }
  23.   }
  24.  
  25.   if (num_aciertos == strlen (cad_aux))
  26.     return 0;
  27.   else
  28.     return 1;
  29. }

Lo que hace a la hora de comparar es buscar cada letra de la primera palabra en la segunda, y cuando la encuentra la reemplaza por el caracter '#' (si una palabra tiene 2 'a' la otra tambien tiene que tener 2 'a') y aumenta en contador de aciertos.

Despues de comparar todas las letras si la longitud de la palabra coincide con el numero de aciertos es que es un anagrama.


jamon->jamon->jamon->jamon->jamon->jamon
monja->mon#a->mon##->#on##->##n##->#####
  #3 (permalink)  
Antiguo 25/01/2010, 15:39
 
Fecha de Ingreso: diciembre-2009
Mensajes: 6
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Programa anagramas en C

Muchas gracias :D funciona a la perfección.

Gracias por tu tiempo. Un saludo !!

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:28.