Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/01/2010, 03:26
Megamouse
 
Fecha de Ingreso: enero-2010
Mensajes: 24
Antigüedad: 15 años
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##->#####