Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Buscar Repeticiones palabras en un Array

Estas en el tema de Buscar Repeticiones palabras en un Array en el foro de C/C++ en Foros del Web. Hola Gente, usó el buscador y no encontre nada relacionado... Tengo que calcular la Entropía de un texto, para eso debo analizar un texto escrito ...
  #1 (permalink)  
Antiguo 24/11/2011, 20:53
Avatar de almaesdi  
Fecha de Ingreso: enero-2005
Mensajes: 70
Antigüedad: 19 años, 3 meses
Puntos: 0
Buscar Repeticiones palabras en un Array

Hola Gente, usó el buscador y no encontre nada relacionado...

Tengo que calcular la Entropía de un texto, para eso debo analizar un texto escrito por el usuario, yo por mis funciones al texto ingresado le saco todos los distractores como las ",.:;?!\n\t, etc.
Al final me quedan puras palabras y hartos espacios en blanco...
Se me olvida decir que el texto lo guardo en una matriz bidimensional, 10 lineas 140 caracteres (columnas)...
Mi problema es el siguiente, para calcular la entropia debo saber cuantas veces se me repite cada palabra, ahi esta mi problema, no sé me ocurre como hacerlo...Hize este codigo aparte(con un array de una dimension) pero solo me funciona para calcular la repeticion de la primera palabra, adicionalmente, la cadena original se me modifica y pierdo todas las demas palabras:

Código:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

main(){
   char s1[49] = "Hola como estas Hola como Hola Hola chao bye";
   char s2[4] = " \n\t";
   char *palabra;
   char *ptr;
   int repeticion=1;
   
      
   ptr = strtok( s1, s2 );    // Primera llamada => Primer token
   palabra=ptr;
     
   while( (ptr = strtok( NULL, s2 )) != NULL ){    // Posteriores llamadas
     
     if( strcmp( palabra, ptr ) == 0 ){
     repeticion++;
       }
       
   }
   
   printf("La palabra %s se repite %d veces\n",palabra,repeticion);
   printf("La cadena quedo: %s\n",s1);
   system("pause");   
}
Si me ayudan con este ejemplo, despues podria aplicarlo en una matriz...me sirve cualquier solucion...

gracias
  #2 (permalink)  
Antiguo 24/11/2011, 20:59
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Buscar Repeticiones palabras en un Array

Tienes conocimientos sobre estructuras de datos, tales como listas o arboles??

Si no deberias crear una matris tan grande como lo concideres....dentro del while que tenes tenes que comparar ptr con cada fila de la matris . Si encontras la palabra, sumas uno a un contador asociado a esa fila, si llegas al fondo, la agregas a la matris.

Pero para hacer todo esto, seria bueno saber tus conocimientos sobre punteros, y manejos de matrices.

Saludos
  #3 (permalink)  
Antiguo 25/11/2011, 08:21
Avatar de almaesdi  
Fecha de Ingreso: enero-2005
Mensajes: 70
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Buscar Repeticiones palabras en un Array

Gracias por la respuesta...
De todos modos porfin encontre una solucion en internet...dejare el link ya que no es mio...
http://programacion.e-recursos.net/f.../stringbusca.c

Enseñan a buscar, buscar eliminar y buscar y reemplazar

Gracias

Tengo 2 cadenas iguales, una la tengo solo para ir viendo las palabras en orden, y en la segunda voy eliminado las repeticiones y viendo cuantas son con la opcion "Buscar y Eliminar", entonces cada vez q elimina una repeticion tengo un contador....Despues me queda la cadena sin esa palabra (pero con sus repeticiones)...

Lo unico que no me gusta es que la funcion "strstr" es que borra las coincidencias en el contenido de una palabra...me refiero que cuando busque la palabra "sol", y tengo la palabra soluciones, me contara 1, ya que SOLucion tiene una coincidencia

Última edición por almaesdi; 25/11/2011 a las 08:29

Etiquetas: matriz, palabras, repeticiones, vectores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:01.