daniel 0 Report post Posted March 1, 2011 hola tengo un problema con la codificacion de c++ en un programa importante que necesito para la universidad. por favor espero que me ayuden hace 3 dias que estoy buscando la solucion y nada Hi I have a problem with the encoding of c + + on a major program I need for college. I hope please help me 3 days ago I'm looking for the solution and nothing codding: #include<iostream> using namespace std; //-----------------CLASE FECHA POR AGREGACION----------------------- class Fecha{ public: int iDia, iMes, iAnio; Fecha(int iD=0,int iM=0, int iA=0) { setDia(iD); setMes(iM); setAnio(iA); } void setDia(int d){iDia =d;} void setMes(int m){iMes =m;} void setAnio(int a){iAnio =a;} int getDia(){return iDia;} int getMes(){return iMes;} int getAnio(){return iAnio;} void mostrarFecha(); }; void Fecha::mostrarFecha() { cout<<getDia()<<"/"<<getMes()<<"/"<<getAnio()<<endl; } //--------------------CLASE SOCIO------------------------------------------- class Socio{ string sNombre, sDNI; Fecha *fAsociacion; int iSocio; static int iCantidad; public: Socio(string sNombre, string sDNI, int iSocio){ setNombre(sNombre); setDNI(sDNI); setSocio(iSocio); } void setNombre(string n){sNombre = n;} void setDNI(string dni){sDNI = dni;} void setSocio(int s){iSocio = s;} string getNombre(){return sNombre;} string getDNI(){return sDNI;} int getSocio(){return iSocio;} Socio(string,string,int,int,int); virtual void mostrar() = 0; }; int Socio :: iCantidad = 1000; Socio :: Socio(string nom,string dni,int da,int md,int ad) { iSocio = iCantidad; iCantidad = iCantidad+2; sNombre = nom; sDNI = dni; fAsociacion = new Fecha(da,md,ad); } void Socio :: mostrar() { cout<<"\nNombre:"<<getNombre()<<endl; cout<<"\nDni:"<<getDNI()<<endl; cout<<"\n Nro. de Socio:"<<getSocio()<<endl; cout<<"\nfecha de asociacion:"; fAsociacion->mostrarFecha(); } //------------------------CADETE ---------------------------------------- class Cadete : public Socio{ int iCuota; static int iValor; public: Cadete(string sNombre, string sdni, int da, int md, int ad,int iCuota) : Socio(sNombre,sdni, da,md,ad){ setCuota(iCuota); } void setCuota(int c){iCuota = c;} int getCuota(){return iCuota;} void mostrar(); }; int Cadete :: iValor = 5; if(Cadete.getAnio()=<1999){ iCuota = iValor-3; } else{ iCuota = iValor; }; void Cadete :: mostrar(){ cout<<"----------------SOCIO CADETE-----------------"<<endl; Socio :: mostrar(); cout<<endl<<"\nValor de Cuota: $"<<getCuota(); }; //-----------------------ACTIVO------------------------------------------ class Activo : public Socio{ int iPago; static int iaCuota; public: Activo(string sNombre, string sdni, int da,int md, int ad, int iPago) : Socio(sNombre,sdni,da,md,ad){ setPago(iPago); } void setPago(int p){iPago = p;} int getPago(){return iPago;} void mostrar(); }; int Activo :: iaCuota = 10; if(Activo.Anio()=<1999) { iPago = iaCuota - 3; } else { iPago = iaCuota; }; void Activo :: mostrar(){ cout<<"----------------SOCIO ACTIVO-----------------"<<endl; Socio :: mostrar(); cout<<endl<<"\nValor de Cuota: $"<<getPago(); -------------------------------------------------------------------------------------------------------- error: 86 G:\programas facultad\ej. prog 2\ej4.tp9.cpp expected unqualified-id before "if" 86 G:\programas facultad\ej. prog 2\ej4.tp9.cpp expected `,' or `;' before "if" 89 G:\programas facultad\ej. prog 2\ej4.tp9.cpp expected unqualified-id before "else" 89 G:\programas facultad\ej. prog 2\ej4.tp9.cpp expected `,' or `;' before "else" 113 G:\programas facultad\ej. prog 2\ej4.tp9.cpp expected unqualified-id before "if" 113 G:\programas facultad\ej. prog 2\ej4.tp9.cpp expected `,' or `;' before "if" 117 G:\programas facultad\ej. prog 2\ej4.tp9.cpp expected unqualified-id before "else" 117 G:\programas facultad\ej. prog 2\ej4.tp9.cpp expected `,' or `;' before "else" ---------------------------------------------------------------------------------------------------------- como pueden ver los errores estan en los 2 "if" As you can see the errors are within 2 "if" espero su ayuda gracias Share this post Link to post Share on other sites
Audioslave 0 Report post Posted March 1, 2011 Bueno son varios los errores, vayamos por parte: En primer lugar: vos ten?s una clase Cadete que hereda de Socio, hasta ah? vamos perfecto. Luego vos haces if (Cadete.getAnio() => 1999) Ese if tiene 4 errores. 1- Para acceder a una funci?n miembro de una clase no se usa el operador "." sino "::". 2- getAnio es una funci?n miembro de la clase Fecha. Vos hiciste herencia de Socio, pero Socio NO HEREDA DE FECHA por lo tanto NUNCA vas a poder acceder a esa funci?n al menos que lo hagas heredar. La clase Socio te quedar?a as?: class Socio : public Fecha 3- Est?s haciendo p?sima la comparaci?n. El operador Mayor o igual es: >= . El operador MENOR O IGUAL es: <=. Lo pusiste al revez vos, entonces el if te quedar?a as?: if (Cadete::getAnio() >= 1999) 4- Qu? hace un if / else FUERA de una funci?n? Esas comprobaci?nes se hacen siempre adentro de una funci?n. Digamos que el if est? en cualquier lado menos donde deber?a estar. En el pr?ximo if comet?s exactamente el mismo error: if(Activo.Anio()=<1999) 1- En primer lugar el operador era :: como dijimos antes. 2- Anio no existe, habr?s querido decir: getAnio() 3- El operador est? mal, igual que el anterior. 4- El if est? fuera de una funci?n, igual que el anterior. Un abrazo. Share this post Link to post Share on other sites
daniel 0 Report post Posted March 1, 2011 (edited) ok algunos errores de los q me deci estaban asi lo modifique sigue el mismo problema y con el tema de la clase Fecha no estoy usando herencia estoy usando agregacion es decir la funcion socio no depende de Fecha, como veras los setter y getter se encuentran en la class Fecha o sea q tengo q llamar a fecha. No solo eso probe tambien cambiando Cadete por Fecha :: getAnio() y nada. probe como me dijist y nada sigue igual :'( ME SIGUE TIRANDO ESACTAMENTE LOS MISMOS ERRORES! UNA PREGUNTA MEDIO ESTUPIDA QUE NO ME ACUERDO A QUE LIBRERIA PERTENECE EL IF? Y lo del if fuera de funcion?? no entiendo otros programas que hice no me dieron ese error . Supongo que lo que me queres decir es que lo tengo q definir dentro de la estructura, en ese caso como hago? creo una funcion ej: void calcularfundador() dentro de la estructura? y la defino afuera: void Cadete :: calcular fundador(){ y el if aca?) SOS UN GRANDE CALU NO SABES LO Q ME SALVA ESTE FORO NO LO HABIA VISTO!! EMPIEZO A AYUDAR Y A PEDIR AYUDA COMO DEGENERADO JAJAJAJ . GRACIAS AUDIOSLAVE POR RESPONDER... me sumo a ayudar d1. el embole q me da q un programa de mas de 1200 lineas me tire error en 2 putos if Edited March 1, 2011 by daniel Share this post Link to post Share on other sites
Audioslave 0 Report post Posted March 1, 2011 Jaja pudiste solucionarlo entonces? Share this post Link to post Share on other sites
daniel 0 Report post Posted March 1, 2011 Jaja pudiste solucionarlo entonces? no se soluciono nada sigue igual esto respondeme porq me parece raro... Y lo del if fuera de funcion?? no entiendo otros programas que hice no me dieron ese error . Supongo que lo que me queres decir es que lo tengo q definir dentro de la estructura, en ese caso como hago? creo una funcion ej: void calcularfundador() dentro de la estructura? y la defino afuera: void Cadete :: calcular fundador(){ y el if aca?) Share this post Link to post Share on other sites
Audioslave 0 Report post Posted March 1, 2011 Ojo, una estructura es muy distinto de una funci?n. Las sentencias condicionales (tales como if, else, fo, while, for) van siempre dentro de una funci?n. Mir? tu codigo y comparalo con el mio. En el mio yo compile y funciona todo perfecto ya. #include <iostream> using namespace std; class Fecha { public: int iDia, iMes, iAnio; Fecha (int iD=0,int iM=0, int iA=0) { setDia(iD); setMes(iM); setAnio(iA); } void setDia(int d){iDia =d;} void setMes(int m){iMes =m;} void setAnio(int a){iAnio =a;} int getDia(){return iDia;} int getMes(){return iMes;} int getAnio(){return iAnio;} void mostrarFecha(); }; void Fecha::mostrarFecha() { cout<<getDia()<<"/"<<getMes()<<"/"<<getAnio()<<endl; } //--------------------CLASE SOCIO------------------------------------------- class Socio : public Fecha { string sNombre, sDNI; Fecha *fAsociacion; int iSocio; static int iCantidad; public: Socio(string sNombre, string sDNI, int iSocio) { setNombre(sNombre); setDNI(sDNI); setSocio(iSocio); } void setNombre(string n){sNombre = n;} void setDNI(string dni){sDNI = dni;} void setSocio(int s){iSocio = s;} string getNombre(){return sNombre;} string getDNI(){return sDNI;} int getSocio(){return iSocio;} Socio(string,string,int,int,int); virtual void mostrar() = 0; }; int Socio :: iCantidad = 1000; Socio :: Socio(string nom,string dni,int da,int md,int ad) { iSocio = iCantidad; iCantidad = iCantidad+2; sNombre = nom; sDNI = dni; fAsociacion = new Fecha(da,md,ad); } void Socio :: mostrar() { cout << "\nNombre:" << getNombre() << endl; cout<<"\nDni:"<<getDNI()<<endl; cout<<"\n Nro. de Socio:"<<getSocio()<<endl; cout<<"\nfecha de asociacion:"; fAsociacion->mostrarFecha(); } //------------------------CADETE ---------------------------------------- class Cadete : public Socio { int iCuota; static int iValor; public: Cadete(string sNombre, string sdni, int da, int md, int ad,int iCuota) : Socio(sNombre,sdni, da,md,ad) { setCuota(iCuota); } void setCuota(int c){iCuota = c;} int getCuota(){return iCuota;} void mostrar(); }; int Cadete::iValor = 5; void Cadete :: mostrar(){ if(Cadete::getAnio() <= 1999){ iCuota = iValor-3; } else{ iCuota = iValor; } cout<<"----------------SOCIO CADETE-----------------"<<endl; Socio :: mostrar(); cout<<endl<<"\nValor de Cuota: $"<<getCuota(); }; //-----------------------ACTIVO------------------------------------------ class Activo : public Socio { int iPago; static int iaCuota; public: Activo(string sNombre, string sdni, int da,int md, int ad, int iPago) : Socio(sNombre,sdni,da,md,ad){ setPago(iPago); } void setPago(int p){iPago = p;} int getPago(){return iPago;} void mostrar(); }; int Activo :: iaCuota = 10; void Activo :: mostrar(){ if(Activo::getAnio() <= 1999) { iPago = iaCuota - 3; } else { iPago = iaCuota; }; cout<<"----------------SOCIO ACTIVO-----------------"<<endl; Socio :: mostrar(); cout<<endl<<"\nValor de Cuota: $"<<getPago(); } Fijate que los IF los puse adentro de la funci?n mostrar. Share this post Link to post Share on other sites
daniel 0 Report post Posted March 1, 2011 a eso me referia o sea el id tengo q meterlo dentro de una funcion definida dentro de la estructura ahora si t entendi ahi funciono no me hizo falta poner el : public Fecha{ pasa que fecha lo estoy usando como metodo de agregacion gracias Audioslave me salvast la renegada jajaja Share this post Link to post Share on other sites
Audioslave 0 Report post Posted March 1, 2011 Buenisimo si te funcion?. Yo lo tuve que hacer asi porque no tengo m?s codigo que el que pusiste ac?, quiz? que vos al tener otras cosas te funcione de otra manera. Un abrazo! Share this post Link to post Share on other sites
daniel 0 Report post Posted March 2, 2011 modifique Cadete por Fecha y lo meti dentro de un void calcularFundador() gracias man Share this post Link to post Share on other sites
~farjat 0 Report post Posted March 2, 2011 lo importante no es saber, sino conocer al que sabe! Share this post Link to post Share on other sites
Tuby 0 Report post Posted March 2, 2011 Un capo este nuevo GM!!! Share this post Link to post Share on other sites
RaZor_Kill 0 Report post Posted March 2, 2011 (edited) mira todo lo que estaba estudiando que copado, la unica cagada q te equivocas en una boludes y no te anda el programa jaja, pero es cuestion de practicar nomas, la practica es fundamental para este tipo de cosas :D tengo que seguir con esto!!! pero este a?o me parece q sale a?o sabatico para el estudio jaja. Saludos a todos Soy_Virgen Aiacos Edited March 2, 2011 by RaZor_Kill Share this post Link to post Share on other sites