busqueda de palabras en un fichero

Iniciado por johnnyd77, 29 Junio 2016, 06:21 AM

0 Miembros y 2 Visitantes están viendo este tema.

johnnyd77

buenas a todos, necesito crear un programa que abra un fichero y busque palabras (en mi caso , debo buscar tragos y palabras positivas que los acompañen), hasta ahora solo he abierto el archivo, guardado en un string y transforme todas las minusculas a mayusculas para disminuir un poco la cantidad de palabras a buscar. (las palabras no las ingresa el usuario, debe hacerlo el programa.

no se que hacer he intentado pero o no me compila o no hace lo que debe  :( :(
( c++)
Código (cpp) [Seleccionar]

       #include <iostream>
#include <fstream>
#include <cctype>
#include <cstring>
#include <cstdlib>
#include <sstream>

using namespace std;

string lectura(ifstream &file);
string mayusculas (string archivo);


int main(){
int contar;
string contenedor, enmayusculas,copia;
ifstream archivo ("tweets.txt");
if(archivo.fail())
{cout<<"error";
return  1;  }

contenedor=lectura(archivo);
enmayusculas=mayusculas(contenedor);
copia=enmayusculas;
cout<<copia;
system ("pause");  
return 0;
}

string lectura (ifstream &file) {
string entrada, contenido;
while (getline(file,entrada))
contenido=contenido + entrada ;

return contenido;
}

string mayusculas (string archivo) {
for(int i=0;i<archivo.size();i++){
archivo[i]=toupper(archivo[i]);
}
return archivo;
}

AlbertoBSD

#1
Déjà vu



Aqui esta este tema:

http://foro.elhacker.net/programacion_cc/ayuda_urgenteee-t454456.0.html

No se si eres tu o otro de tus compañeros.

Por cierto que cual es tu duda?

Sabes leer el archivo?

Declarar las palabras a buscar?

Iterar en la cadenas a buscar?

sabes que es un  string?

No es que no te quiera ayudar pero no se por donde empezar, no se si manejas strtok, no se si sabes declarar un arreglo de strings (Que es lo que necesitas)

Te dejo uno de mis videos de programacion en C no en C++

[youtube=640,360]https://www.youtube.com/watch?v=PwJEPwtwS3E[/youtube]

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

johnnyd77

Cita de: AlbertoBSD en 29 Junio 2016, 06:48 AM
Déjà vu



Aqui esta este tema:

http://foro.elhacker.net/programacion_cc/ayuda_urgenteee-t454456.0.html

No se si eres tu o otro de tus compañeros.

Por cierto que cual es tu duda?

Sabes leer el archivo?

Declarar las palabras a buscar?

Iterar en la cadenas a buscar?

sabes que es un  string?

No es que no te quiera ayudar pero no se por donde empezar, no se si manejas strtok, no se si sabes declarar un arreglo de strings (Que es lo que necesitas)

Te dejo uno de mis videos de programacion en C no en C++

[youtube=640,360]https://www.youtube.com/watch?v=PwJEPwtwS3E[/youtube]

Saludos



es otra persona , mi duda central seria el rastrear las palabras positivas con las palabras de tweets, no se usar la funcion strtok correctamente y la parte de hacer el ciclo para buscar las palabras no se como escribirlo , esto es lo que llevo hasta ahoora

Código (cpp) [Seleccionar]

#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <stdio.h>

using namespace std;

string lecturaycopia(ifstream &a);
int cuentabebidas( string contenido, string palabra);
int cuentapalabras ();
int mayormencion ();
int main()
{
string bebidas []={"COCA-COLA","COCA COLA","BEER","GIN","JUICE","SUKO","GUARANA","MOJITO","RON","TEQUILA","WINE"};
string positivas []={"HOLD","GO FOR","SOUND RIGHT","GOOD","HEALTHY","GRANDE","GREAT","ENJOYING","BUY","FREE","GREATEST"};
string positivas2[]={"PONG","ORGULHOSO","PLENTY","GOT","WIN","FAV","FAVORITE","FEED","BETTER","TASTE","MORE","FRESH","LOVE"};
string positivas3[]={"TASTES","VENTI","PREFIERO","LIKES","LIKE","GENIAL","GOSTA","GUSTA","GUSTAS","GOSTOSO","TOMAR","CONSUMIDA"};
string positivas4 []={"FRIA","ANTOJAO","TOMO","GANAS","TOMEI","GOSTOSA","SHOTS"};
int b1,b2,b3,b4,b5,b6,b7,b8,b9,b10;    //variables enteras de bebidas
int p,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20; //las variables enteras de positivos y bebidas seran puestas de p hasta p42
int p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42;
string contenido;                                                                                          //y b a b9 para ahorrar espacio 
ifstream tweets("tweets.txt");
contenido = lecturaycopia(tweets);
b1 = cuentabebidas(contenido, bebidas[0]) + cuentabebidas(contenido,bebidas[1]);
b2 = cuentabebidas(contenido, bebidas[2]);
b3 = cuentabebidas(contenido, bebidas[3]); 
b4 = cuentabebidas(contenido, bebidas[4]);
b5 = cuentabebidas(contenido, bebidas[5]);
b6 = cuentabebidas(contenido, bebidas[6]);
b7 = cuentabebidas(contenido, bebidas[7]);
b8 = cuentabebidas(contenido, bebidas[8]);
b9 = cuentabebidas(contenido, bebidas[9]);
b10 = cuentabebidas(contenido, bebidas[10]);



cout<<"numero de tweets por bebidas:"<<endl;
cout <<"tweets por coca-cola ="<< b1 << endl;
cout<<"tweets por beer ="<<b2<<endl;
cout<<"tweets por gin ="<<b3<<endl;
cout<<"tweets por juice ="<<b4<<endl;
cout<<"tweets por suko ="<<b5<<endl;
cout<<"tweets por guarana ="<<b6<<endl;
cout<<"tweets por mojito ="<<b7<<endl;
cout<<"tweets por ron ="<<b8<<endl;
cout<<"tweets por tequila ="<<b9<<endl;
cout<<"tweets por wine ="<<b10<<endl;
cout<<endl<<endl<<endl<<endl;
cout<<"numero de palabras positivas por bebida:"<<endl;  //no contar, hacia abajo hombre

return 0;
}



string lecturaycopia(ifstream &a)
{
string s, contenido;
while (getline(a,s))
   contenido += s;
return contenido;
}

int cuentabebidas( string contenido, string palabra)
{  int contador=0, tamano= contenido.size(), posicion=contenido.find(palabra);
for (int i=0; i<tamano;i++){
if(posicion != string::npos){
contador++;

}
return contador;
}
     
 
 
}

AlbertoBSD

Hola necesitas usar la funcion strstr, para encontrar las coincidencias.

te dejo un ejemplo en codigo y un nuevo video ahora si mas enfocado a lo que necesitas:



char *resultado = NULL;
int i = 0;
resultado  = strstr(cadena1,cadena2);
while(resultado   != NULL) {
i++;
resultado  = strstr(resultado  +1,cadena2);
}
printf("Total de coincidencias %i\n",i);



[youtube=640,360]https://www.youtube.com/watch?v=Ns82IZccY2A[/youtube]
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW