Ayuda con Programacion Orientada a Objetos C++

Iniciado por ovg17, 27 Enero 2013, 00:10 AM

0 Miembros y 1 Visitante están viendo este tema.

ovg17

hola tengo el siguiente problema, me piden en un problema basicamente hacer un programa en el cual se ingresen una serie de palabras para asi formar un texto y saber cuantas palabras tiene, cuantos signos de puntuacion y cuantas letras e hice el sigueinte codigo:

#include <iostream>
#include <string.h>
using namespace std;
class palabra{
   private: string contenido;
   private: int nletras;
   public: palabra(){};
   public: palabra(string c, int nl){
      contenido=c;
      nletras=nl;
   }
};
class texto{
   private: int npalabras;
   private: string nautor;
   private: string idioma;
   private: palabra *pal;
   public: texto(int n, string a,string i){
      npalabras=n;
      nautor=a;
      idioma=i;
      pal=new palabra[npalabras];
   }
   public: int numpalabras(){
      int i=0,cont=0;
      for(i=0;i<npalabras;i++){
         if(palabra[i]>64 && palabra[i]<91 || palabra[i]>96 && palabra[i]<123){
            cont=cont+1;
         }
      }
      return(cont);
   }
   
   public: int numsig(){
      int i=0,cont2=0;
      for (i=0;i<npalabras;i++){
         if(palabra[i]>=33 && palabra[i]<=63){
            cont2=cont2+1;
         }
      }
      return (cont2);
   }
};


al compilar me suelta estos errores:

lab9.cpp: En la función miembro 'int texto::numpalabras()':
lab9.cpp:27:14: error: expected primary-expression before '[' token
lab9.cpp:27:31: error: expected primary-expression before '[' token
lab9.cpp:27:48: error: expected primary-expression before '[' token
lab9.cpp:27:65: error: expected primary-expression before '[' token
lab9.cpp: En la función miembro 'int texto::numsig()':
lab9.cpp:37:14: error: expected primary-expression before '[' token
lab9.cpp:37:32: error: expected primary-expression before '[' token
Ha fallado la compilación.

gracias de antemano


Stakewinner00

por que no cambias los numeros de palabra[i]>64 && palabra[i]<91 || palabra[i]>96 && palabra[i]<123
por el carácter.

Por ejemplo si 28 fuera A pues en vez de poner 28 pones 'A'

ovg17

Cita de: Stakewinner00 en 27 Enero 2013, 00:21 AM
por que no cambias los numeros de palabra[i]>64 && palabra[i]<91 || palabra[i]>96 && palabra[i]<123
por el carácter.

Por ejemplo si 28 fuera A pues en vez de poner 28 pones 'A'

porque en el arreglo de tipo palabra, en cada posicion estoy almacenando una palabra, por eso lo recorro con el for para asi ver si se encuentra en ese rango de la tabla ASCII y entre al contador.

amchacon

El error está en esta línea:

Código (cpp) [Seleccionar]
if(palabra[i]>64 && palabra[i]<91 || palabra[i]>96 && palabra[i]<123){
            cont=cont+1;
         }

El nombre del array no es palabra sino pal:
Código (cpp) [Seleccionar]
pal=new palabra[npalabras];

Por cierto, no tienes que poner private: ni public: en cada linea de la clase, lo puedes dejar asi:

Código (cpp) [Seleccionar]
class palabra
{
   private:
            string contenido;
            int nletras;
   public:

    palabra(){};
   palabra(string c, int nl)
   {
      contenido=c;
      nletras=nl;
   }
};


Y el compilador te entenderá perfectamente.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar