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

Funcion para encontrar la frecuencia absoluta en parrafos

Estas en el tema de Funcion para encontrar la frecuencia absoluta en parrafos en el foro de C/C++ en Foros del Web. Hola amigos, tengo una funcion que toma un parrafo y linea por linea analiza la frecuencia de X palabra. El problema que tengo es que ...
  #1 (permalink)  
Antiguo 15/02/2012, 14:02
Avatar de Der_Gregor  
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 9
Antigüedad: 12 años, 10 meses
Puntos: 0
Funcion para encontrar la frecuencia absoluta en parrafos

Hola amigos, tengo una funcion que toma un parrafo y linea por linea analiza la frecuencia de X palabra. El problema que tengo es que la funcion encuentra TODAS la palabras. Por ejemplo: Si quiero la frecuencia de la palabra "dato" tambien cuenta "datos" o "datos_primarios" "eldato", etc. No es capaz de solo contar "dato"

Código:
double calcAbsoluteFreq(string &paragraph, string &word) {

	istringstream tempStr(paragraph);
	string lineParagraph;
	double frecuAbs=0;

	while (getline( tempStr, lineParagraph)) {
		
		// Encontrar la frecuencia absoluta de la palabra en la linea
		string::size_type word_pos( 0 );
		while ( word_pos!=string::npos ) {
			word_pos = lineParagraph.find(word, word_pos);
			if ( word_pos != string::npos ) {
				frecuAbs++;
				// Hacer la siguiente busqueda despues de encontrar la palabra en la misma linea
				word_pos += word.length();
			
			}
		}
	}

return frecuAbs;
}
Pense en detectar si del lado izquierdo de la palabra hay un espacio asi como tambien en el lado derecho de la palabra pero me da el error: std::out_of_range.

Código:
while (getline( tempStr, lineParagraph)) {
	string::size_type word_pos( 0 );
	while ( word_pos!=string::npos ) {
	word_pos = lineParagraph.find(word, word_pos);
		if ( word_pos != string::npos ) {
			if ((lineParagraph.substr(word_pos-1)==" ") &&
 (lineParagraph.substr(word_pos+word.length())==" ")) { 
				frecuAbs++;
				}
			word_pos += word.length();
		}
	}
}
Sinceramente no se que pasa ya que si intento ver que hay en esa posición con un cout, el espacio esta allí.. Alguien podría darme alguna luz???...

Gracias de ante mano!!!...

Etiquetas: encontrar, frecuencia, funcion, parrafos, string
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 13:32.