Programación General > C/C++

 Comparando cadenas en un array de cadenas

(1/1)

emeap:
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 --- #include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h> #define MAX_TAM 5 //Constante que define la longitud máxima de la cadena //Declaración de las funcionesint devolver_coincidencias(char *array_nombres[], char *nombre);void visualizar(int contador); //Mainint main(){    int contador;    char *array_nombres[] = {"pedro garcia","pedro","miguel"}; //Iniciacion de las cadenas    char *nombre = {"pedro"};    contador = devolver_coincidencias(array_nombres,nombre);    visualizar(contador);    printf("n");    system("pause");} //Funcion que devuelve el numero de coincidencias dentro del array de cadenasint devolver_coincidencias(char *array_nombres[], char *nombre){    int a = 0; //Variable que se va moviendo por el array de cadenas    int contador = 0;    if(strlen(array_nombres[a]) == MAX_TAM) //Compara el tamaño buscado con el de la cadena del array    {             if(strcmp(nombre,array_nombres[a]) == 0) //Compara las cadenas             {                                              contador++; //Si son iguales, aumenta el contador              }    }    else    {        a++; //Sino va al siguiente elemento del array de cadenas    }    return contador; //retorna el valor del contador} //Funcion que visualiza el numero de cadenas repetidas en el arrayvoid visualizar(int contador){     printf("La cadena esta repetida %d veces", contador);     getch();}  
Me sería de gran ayuda cualquier aporte. Gracias ^_^

m0skit0:
No entiendo cuál es el problema ni que aporte esperas  :P

Eternal Idol:
Primero contador en el main nunca se inicializa, supongo que queres esto ahi:


--- Código: Text ---contador = devolver_coincidencias(array_nombres,nombre); 
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.

emeap:
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:
Si queres que encuentre "pedro" dentro de "pedro garcia" mejor usa strstr.

Navegación

[0] Índice de Mensajes

Ir a la versión completa