Domingo 15 de Diciembre de 2024, 05:47
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Comparando cadenas en un array de cadenas
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Comparando cadenas en un array de cadenas (Leído 1384 veces)
emeap
Nuevo Miembro
Mensajes: 2
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
#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 funciones
int
devolver_coincidencias
(
char
*
array_nombres
[
]
,
char
*
nombre
)
;
void
visualizar
(
int
contador
)
;
//Main
int
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 cadenas
int
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 array
void
visualizar
(
int
contador
)
{
printf
(
"La cadena esta repetida %d veces"
,
contador
)
;
getch
(
)
;
}
Me sería de gran ayuda cualquier aporte. Gracias
Tweet
«
última modificación: Martes 2 de Junio de 2009, 12:57 por emeap
»
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
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
Fr33k K0mpu73r
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
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
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.
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
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:
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.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Comparando cadenas en un array de cadenas