elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ocurrencia de palabras en c++!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ocurrencia de palabras en c++!!  (Leído 7,373 veces)
Norberto2.0

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Ocurrencia de palabras en c++!!
« en: 3 Mayo 2011, 06:11 am »

He intentado de mil formas hacerlo, pero no me sale, soy principiante;
1.   Permitir que el usuario especifique el nombre del archivo a analizar en una línea de comando. 
2.   Si no ingresa un nombre de archivo, los datos se tomaran de la entrada estándar (cin), terminando el texto con una línea que contenga sólo el carácter 0.
3.   La salida debe contener las palabras y su frecuencia de aparición, una palabra por línea y en orden descendente.
Requerimientos de implementación detallados
1.   Lea las palabras  y almacénelas en una variable de tipo string utilizando el operador de entrada estándar (<<).
2.   Use operaciones de la clase string y funciones de ctype para convertir todas las palabras a letras minúsculas y separar caracteres de puntuación de las mismas.
3.   Defina una clase Tabla, que contenga un arreglo, cuyas componentes  incluyan cada palabra y su frecuencia de aparición. Defina como una constante el tamaño máximo del arreglo (por ejemplo 1000).
4.   La clase Tabla debe contener al menos las siguientes funciones:
a)   void agrega(string pal), agrega pal al arreglo si su  primera aparación e inicializa la frecuencia en 1. Si no, si ya existe pal en el arreglo, incrementa su frecuencia en 1
b)    void ordena(void), ordena el arreglo de acuerdo a la componente frecuencia. a map container to accumulate the frequency counts for each word. The word can be used as the key.
c) void despliega(void), imprime en la salida estándar el arreglo ordenado, graficando la frecuencia de aparición de cada palabra.

es mas el main, y los metodos que me cuestan, necesito hacer un inventario, pero con este programa simplificaria bastante mi proyecto. gracias


En línea

ssaammuu

Desconectado Desconectado

Mensajes: 35



Ver Perfil WWW
Re: Ocurrencia de palabras en c++!!
« Respuesta #1 en: 3 Mayo 2011, 14:02 pm »

Vas a tener que enseñar el código que has intentando crear y/o que partes no puedes hacer porque nadie va a crear el programa entero por ti.


En línea

Norberto2.0

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ocurrencia de palabras en c++!!
« Respuesta #2 en: 3 Mayo 2011, 20:14 pm »

este es mi archivo tabla.h, debo implementar los metodos, pero cuando lo hago me itra un error en la linea del tabla.cpp; #include "tabla.h"

#ifndef TABLA_H
#define TABLA
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>


using namespace std;


class Tabla {
      private:
              const int max = 100;
              string miarreglo[][] = new String [max,2];
             
      public:
           void agrega(string pal); // agrega pal al arreglo e inicializa su frecuencia en 1, si ya esta pal, aumenta la frecuencia en 1.
           void ordena(void); // ordena el arreglo de acuerdo a su frecuencia(una variable puede guardar la frecuencia de la palabra, siendo la palabra su clave)
           void despliega(void);//imprime en la salida estándar el arreglo ordenado, graficando la frecuencia de aparición de cada palabra.

   
};
#endif
En línea

ssaammuu

Desconectado Desconectado

Mensajes: 35



Ver Perfil WWW
Re: Ocurrencia de palabras en c++!!
« Respuesta #3 en: 3 Mayo 2011, 21:49 pm »

Código:
const int max = 100;
string miarreglo[][] = new String [max,2];
No puedes asignarles el valor en la cabecera. Eso debes hacerlo en tabla.cpp A lo mejor te conviene definir max fuera de la clase y tener
Código:
string miarreglo[max][2];

También te estás olvidando del constructor y destructor, si quieres crear objetos de la clase vas a necesitarlos.
« Última modificación: 3 Mayo 2011, 21:51 pm por ssaammuu » En línea

Norberto2.0

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ocurrencia de palabras en c++!!
« Respuesta #4 en: 3 Mayo 2011, 22:10 pm »

ya cree el constructor =)
pero me sigue tirando error en el tabla.cpp
en la linea de
#include "tabla.h"
En línea

Norberto2.0

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ocurrencia de palabras en c++!!
« Respuesta #5 en: 3 Mayo 2011, 22:12 pm »

eso hice ahora =)

Citar
#ifndef TABLA_H
#define TABLA
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>


using namespace std;
const int max = 100;

class Tabla {
      private:
              string miarreglo[max][2];
             
      public:
             Tabla(void){
                    for (int i=0;i<100;i++){
                        miarreglo[][] = ["",0];
             }
             void agrega(string); // agrega pal al arreglo e inicializa su frecuencia en 1, si ya esta pal, aumenta la frecuencia en 1.
             void ordena(void); // ordena el arreglo de acuerdo a su frecuencia(una variable puede guardar la frecuencia de la palabra, siendo la palabra su clave)
             void despliega(void);//imprime en la salida estándar el arreglo ordenado, graficando la frecuencia de aparición de cada palabra.

   
};
#endif

En línea

ssaammuu

Desconectado Desconectado

Mensajes: 35



Ver Perfil WWW
Re: Ocurrencia de palabras en c++!!
« Respuesta #6 en: 3 Mayo 2011, 22:18 pm »

Primero que te falta un }
En C/C++
Código:
miarreglo[][] = ["",0];
Esto no lo puedes hacer

En todo caso:
Código:
for (int i=0;i<100;i++){
      miarreglo[i][0] = "";
      miarreglo[i][1] = "";
}
En línea

Norberto2.0

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ocurrencia de palabras en c++!!
« Respuesta #7 en: 3 Mayo 2011, 22:57 pm »

gracias.. en el metodo agregar
Citar
void Tabla::agrega(string pal){
       for (int j=0; j<max; j++){
           if(miarreglo[j][j]==pal){
                   miarreglo[j][j]= miarreglo(j,1);
           }
           else{
                aqui como  agrego pal?}
       }
}


eso es correcto?
En línea

ssaammuu

Desconectado Desconectado

Mensajes: 35



Ver Perfil WWW
Re: Ocurrencia de palabras en c++!!
« Respuesta #8 en: 4 Mayo 2011, 23:55 pm »

No se lo que intentas hacer pero de momento te puedo decir que no es correcto por la sintaxis.
Código:
miarreglo[j][j]= miarreglo(j,1);

Me parece que tu lo que quieres es un arreglo de palabras con su respectivo número de apariciones. Si es eso vas a tener que declarar una estructura y despues tener una pila de esa estructura o mejor aun, un vector.
Código:
struct sPalabra{
    string palabra;
    int numero;
};

class Tabla {
      private:
              vector<sPalabra> misPalabras;

      public:
             void agrega(string); // agrega pal al arreglo e inicializa su frecuencia en 1, si ya esta pal, aumenta la frecuencia en 1.
             void ordena(void); // ordena el arreglo de acuerdo a su frecuencia(una variable puede guardar la frecuencia de la palabra, siendo la palabra su clave)
             void despliega(void);//imprime en la salida estándar el arreglo ordenado, graficando la frecuencia de aparición de cada palabra.

};

Puedes agregar de esta manera
Código:
void Tabla::agrega(string palabra){
    //comprobamos todas las palabras y si se encuentra incrementa el numero
    for (int i=0;i<misPalabras.size();i++){
        if (misPalabras[i].palabra==palabra){
        misPalabras[i].numero++;
        return;
        }
    }
    //si no la agregamos
    misPalabras.push_back(sPalabra{palabra,1});
};

Pero, la verdad es que por la forma de intentar declarar arreglos, tendrías que aprender lo básico antes de saltar a las clases ya que si no te va a costar mucho avanzar.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
palabras
Java
andaluz 7 5,037 Último mensaje 14 Abril 2010, 11:21 am
por Leyer
Re: Ocurrencia de palabras en c++!!
Programación C/C++
Norberto2.0 0 2,456 Último mensaje 3 Mayo 2011, 19:43 pm
por Norberto2.0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines