Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/04/2008, 12:06
GagleKas
 
Fecha de Ingreso: abril-2008
Mensajes: 141
Antigüedad: 16 años
Puntos: 0
Re: Contar el numero de veces que aparece cada palabra en una frase

Hola, a ver si te puedo ayudar. Lo que se me ocurre que podrias hacer es crear un tipo propio como el siguiente:

Código:
typedef struct{
     char *palabra;
     int n;
}Palabra;

palabra
es un puntero de caracter que sirve unicamente para crear un array dinamico para guardar la palabra y no malgastar memoria (habra que pedir memoria para tantas letras como tenga la palabra). Tambien puedes declarar lo siguiente y no complicarte tanto la vida xD.

Código:
char palabra[50];
n guardara el numero de veces que sale repetida la palabra.

Habra que declarar un puntero del tipo Palabra, por ejemplo:

Código:
Palabra *p;
Lo primero que haces es recorrer toda la frase y contar el numero de palabras totales para, posteriormente, poder pedir memoria para tantos registros del tipo Palabra como numero de palabras tenga la frase con el objetivo de crear un array, no se si me explique bien xD. Es decir, si el numero total de palabras es num_total haces...:

Código:
p=(Palabra*)malloc(sizeof(Palabra)*num_total);
Lo siguiente sera inicializar a 0 todos los campos n del array de registros que hemos creado e inicializar con espacios en blanco todos los campos palabra.


Ahora lo que toca es volver a recorrer toda la frase. Lees una palabra y la comparas con todos los campos palabra del array de registros creado. Si es igual incrementas la n.



Es lo que se me acaba de ocurrir... seguramente tendra fallos pero es una idea de donde puedes partir... Consejo: Por el momento olvidate de funciones raras y haz el programa con arrays, registros, tipos propios y demas elementos basicos.

Espero haberme explicado bien jaja. Cualquier duda, pregunta.