• Miércoles 15 de Mayo de 2024, 07:40

Autor Tema:  Comparando cadenas en un array de cadenas  (Leído 1276 veces)

emeap

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Comparando cadenas en un array de cadenas
« en: Martes 2 de Junio de 2009, 12:30 »
0
Buenas, tengo un problema con un ejercicio en el cual hay que buscar una cadena (previamente declarada en el main) en un array de cadenas, y finalmente mostrar el numero de coincidencias...

Tengo el siguiente código:

Código: C
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <conio.h>
  6.  
  7. #define MAX_TAM 5 //Constante que define la longitud máxima de la cadena
  8.  
  9. //Declaración de las funciones
  10. int devolver_coincidencias(char *array_nombres[], char *nombre);
  11. void visualizar(int contador);
  12.  
  13. //Main
  14. int main()
  15. {
  16.     int contador;
  17.     char *array_nombres[] = {"pedro garcia","pedro","miguel"}; //Iniciacion de las cadenas
  18.     char *nombre = {"pedro"};
  19.     contador = devolver_coincidencias(array_nombres,nombre);
  20.     visualizar(contador);
  21.     printf("n");
  22.     system("pause");
  23. }
  24.  
  25. //Funcion que devuelve el numero de coincidencias dentro del array de cadenas
  26. int devolver_coincidencias(char *array_nombres[], char *nombre)
  27. {
  28.     int a = 0; //Variable que se va moviendo por el array de cadenas
  29.     int contador = 0;
  30.     if(strlen(array_nombres[a]) == MAX_TAM) //Compara el tamaño buscado con el de la cadena del array
  31.     {
  32.              if(strcmp(nombre,array_nombres[a]) == 0) //Compara las cadenas
  33.              {
  34.                                               contador++; //Si son iguales, aumenta el contador
  35.              }
  36.     }
  37.     else
  38.     {
  39.         a++; //Sino va al siguiente elemento del array de cadenas
  40.     }
  41.     return contador; //retorna el valor del contador
  42. }
  43.  
  44. //Funcion que visualiza el numero de cadenas repetidas en el array
  45. void visualizar(int contador)
  46. {
  47.      printf("La cadena esta repetida %d veces", contador);
  48.      getch();
  49. }
  50.  
  51.  

Me sería de gran ayuda cualquier aporte. Gracias ^_^
« última modificación: Martes 2 de Junio de 2009, 12:57 por emeap »

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Comparando cadenas en un array de cadenas
« Respuesta #1 en: Martes 2 de Junio de 2009, 12:45 »
0
No entiendo cuál es el problema ni que aporte esperas  :P

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Comparando cadenas en un array de cadenas
« Respuesta #2 en: Martes 2 de Junio de 2009, 12:51 »
0
Primero contador en el main nunca se inicializa, supongo que queres esto ahi:

Código: Text
  1. contador = devolver_coincidencias(array_nombres,nombre);
  2.  

devolver_coincidencias no funciona para nada, el if del strlen hace que solo compare cuando la cadena tenga un tamaño menor o igual a 5 con lo cual el primer nombre es ignorado. Ademas no hay un bucle como para que compare mas de una palabra, solo compara la primera, vas a tener que establecer una forma de pasarle (o detectar si usas un NULL en el array) el tamaño del array.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

emeap

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Comparando cadenas en un array de cadenas
« Respuesta #3 en: Martes 2 de Junio de 2009, 12:58 »
0
He corregido un poco el código de fallos garrafales que he visto. Tengo una duda, para comparar "pedro" con "pedro garcia", ¿tendría que hacerlo con un bucle letra por letra comparando hasta el espacio por ejemplo?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Comparando cadenas en un array de cadenas
« Respuesta #4 en: Martes 2 de Junio de 2009, 13:13 »
0
Si queres que encuentre "pedro" dentro de "pedro garcia" mejor usa strstr.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.