Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: inewcl en 28 Junio 2016, 10:02 am



Título: Ayuda urgenteee !
Publicado por: inewcl en 28 Junio 2016, 10:02 am
Necesito completar un codigo que haga lo siguiente

1. Número de tweets por tipo de bebida.
2. La bebida más mencionada

Adicionalmente, es necesario determinar cuántos tweets por tipo de bebida son “positivos” y, para esto, es
necesario verificar si existe una palabra positiva en el mismo tweet del tipo de bebida por lo que se le pide
calcular lo siguiente:

3. Número de palabras positivas por tipo de bebida.
4. La bebida con mejor evaluación positiva, en donde la evaluación corresponde al número de palabras
positivas que acompañan a la bebida por tweet.
5. La palabra positiva más repetida.

Tanto los nombres de bebidas como palabras positivas pueden aparecer más de una vez por tweet.
En ese
caso se debe contar múltiples veces un mismo tweet (cada aparición de la bebida y la palabra cuentan).
A continuación se listan los tipos de bebidas y las palabras positivas.

Bebidas

beer, gin, juice, suko, coca cola, Coca Cola, coca-cola, guarana, mojito, ron, tequila, wine .

Palabras positivas

save, hold, go for, drink, finished, Drinking, sound right, good, healthy, grande, great, enjoying, buy, free,
Hold, greatest, pong, get, orgulhoso, strawberry, plenty, got, win, tonic, fav, favorite, feed, courtesy, better,
taste, drinks, more, fresh, More, love, Love, popcorn, tastes, venti, prefiero, pizza, Pizza, likes, like, genial,
gosta, gusta, refrigerador, gustas, gostoso, gelado, reir, bom, tomar, beber, consumida, comsumir, fria,
comi, antojao, tomo, ganas, tomei, gostosa, shots.



Lo que llevo (no sé si voy por buen camino)

Código
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <cstring>
  5. #include <fstream>
  6.  
  7. using namespace std;
  8.  
  9. bool espositivo(string input)
  10. {
  11.    string GoodWords = "save,hold,go for,drink,finished,Drinking,sound right,good,healthy,grande,great,enjoying,buy,free,Hold,greatest,pong,get,orgulhoso,strawberry,plenty,got,win,tonic,fav,favorite,feed,courtesy,better,taste,drinks,more,fresh,More,love,Love,popcorn,tastes,venti,prefiero,pizza,Pizza,likes,like,genial,gosta,gusta,refrigerador,gustas,gostoso,gelado,reir,bom,tomar,beber,consumida,comsumir,fria,comi,antojao,tomo,ganas,tomei,gostosa,shots";
  12.    char *dup = strdup(GoodWords.c_str());
  13.    char *aux2 = strtok(dup,",");
  14.    while(aux2)
  15.    {
  16.        if(input.find(aux2) != string::npos)
  17.        {
  18.            return true;
  19.        }
  20.        aux2 = strtok(NULL,",");
  21.    }
  22.    return false;
  23. }
  24.  
  25. int main()
  26. {
  27.    ifstream Lector;
  28.    Lector.open("tweets.txt");
  29.    string Linea;
  30.    int beer = 0;
  31.    int lineas = 0;
  32.    while(getline(Lector,Linea))
  33.    {
  34.       lineas++;
  35.       cout << Linea << endl;
  36.       if (Linea.find("beer") != string::npos && espositivo(Linea)) {
  37.          beer++;
  38.       }
  39.    }
  40.    cout << "Lineas " << lineas << " Beer positivas " << beer << endl;
  41. }
  42.  
  43.  




Archivo utilizado
tweet.txt
 http://www.mediafire.com/download/dzdas8zozsasbv3/tweets.txt  (http://www.mediafire.com/download/dzdas8zozsasbv3/tweets.txt)


Título: Re: Ayuda urgenteee !
Publicado por: AlbertoBSD en 28 Junio 2016, 14:00 pm
Y cual es tu duda?

Leer el archivo?

Contar tweets?

Buscar cadenas de texto?

Utilizar variables?

Saludos


Título: Re: Ayuda urgenteee !
Publicado por: inewcl en 28 Junio 2016, 19:23 pm
Y cual es tu duda?

Leer el archivo?

Contar tweets?

Buscar cadenas de texto?

Utilizar variables?

Saludos

Hola,
Tengo la duda de cómo buscar la palabra más repetida, tener un conteo de eso y elegir la que más se repite y mostrarla


Título: Re: Ayuda urgenteee !
Publicado por: AlbertoBSD en 28 Junio 2016, 19:44 pm
Necesitas usar find y recorer la cadena hasta el fin de la misma y un arreglo de contadores para saber cual es la palabra que mas se repitió.

Necesitas hacer un ciclo por cada token y a su vez por cada input.

Ahora si la lista de palabras ya la tieness por que no haces un arreglo de strings o de char *

Código
  1. string palabras[] ={"palabra1","palabras2",...};

o

Código
  1. char *palabras[] = {/*Lista aqui*/}

Saludos


Título: Re: Ayuda urgenteee !
Publicado por: inewcl en 28 Junio 2016, 20:32 pm
Necesitas usar find y recorer la cadena hasta el fin de la misma y un arreglo de contadores para saber cual es la palabra que mas se repitió.

Necesitas hacer un ciclo por cada token y a su vez por cada input.

Ahora si la lista de palabras ya la tieness por que no haces un arreglo de strings o de char *

Código
  1. string palabras[] ={"palabra1","palabras2",...};

o

Código
  1. char *palabras[] = {/*Lista aqui*/}

Saludos

adjuntando lo que me dices , junto con lo que ya tenía...
¿ Cómo Quedaría ? o más bien ¿ En qué parte tengo que aplicar ese codigo que me enviaste ?

y Muchas gracias por tu atención amigo !



Ayudaaa !!
UP UP UP

MOD EDIT: No hacer doble post.