Ayuda con clases en lenguaje c++

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
abuelo_dante
Forista Nuevo
Forista Nuevo
Mensajes: 15
Registrado: Mié Abr 06, 2011 3:13 am

Ayuda con clases en lenguaje c++

Mensaje por abuelo_dante » Mié Abr 06, 2011 3:31 am

Estoy haciendo este programa pero me manda 3 errores de sintaxis, quiero ver porque, lo que tiene que hacer el programa es apartir de el numero que se de en "a" convertir ese valor en euros, dolares y rublos, me ayudarian mucho si me explican detalladamente
#include <iostream>
#include <math>
#include <conio>
class convertir{
private:
float dolar;
float euro;
float rublo;
float *cant;
public:
convertir();
convertir(float dolar, float euro, float rublo);
~convertir();
leee_pesos(float a);
void conv_dolar(float cant);
void conv_euro(float cant);
void conv_rublo(float cant);
}dinero;
convertir::convertir(){}

convertir::convertir(float dolar, float euro, float rublo)
{
dolar=euro=rublo=0;
}
convertir::leee_pesos(float a)
{

}
convertir::~convertir()
{ cout<<"Finaliza el programa";
}
void convertir::conv_dolar(float cant)
{
dolar=cant * 13;
}
void convertir::conv_euro(float cant)
{
euro=cant * 18;
}
void convertir::conv_rublo(float a)
{
rublo=a * 3;
cout<<"el peso en rublos es "<<rublo;
}


void main(void)
{
float a,b,c,d;
cout<<"Introdusca la cantidad en pesos";
cin>>a;
dinero.leee_pesos(a);
b=dinero.conv_dolar(float dolar);
c=dinero.conv_euro(float euro);
d=dinero.conv_rublo(float rublo);
cout<<"EL cambio de moneda en Dolar"<<b
<<" euro"<<c
<<" rublo"<<d;
}

:mrgreen: Espero que me ayuden
Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: Ayuda con clases en lenguaje c++

Mensaje por hipersayan_x » Mié Abr 06, 2011 4:08 am

1) ¿Y cual es es el error que te da?¿Que dice exactamente? copia y pega la salida del compilador.
2) Coloca el código usando la etiqueta code porque así no se lee nada.
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net
abuelo_dante
Forista Nuevo
Forista Nuevo
Mensajes: 15
Registrado: Mié Abr 06, 2011 3:13 am

Re: Ayuda con clases en lenguaje c++

Mensaje por abuelo_dante » Mié Abr 06, 2011 4:35 am

hipersayan_x escribió:1) ¿Y cual es es el error que te da?¿Que dice exactamente? copia y pega la salida del compilador.
2) Coloca el código usando la etiqueta code porque así no se lee nada.

Código: Seleccionar todo

#include <iostream>
#include <math>
#include <conio>
class convertir{
     private:
    float dolar;
    float euro;
    float rublo;
    float *cant;
     public:
     convertir();
     convertir(float dolar, float euro, float rublo);
     ~convertir();
     leee_pesos(float a);
     void conv_dolar(float dolar , float cant);
     void conv_euro(float cant, float euro);
     void conv_rublo(float cant, float rublo);
}dinero;
convertir::convertir(){}

 convertir::convertir(float dolar, float euro, float rublo)
{
 dolar=euro=rublo=0;
}
convertir::leee_pesos(float a)
{
 cant=&a;
}
convertir::~convertir()
 { cout<<"Finaliza el programa";
 }
void convertir::conv_dolar(float cant)
{
 dolar=cant * 13;
}
void convertir::conv_euro(float cant, float euro)
{
 euro=cant * 18;
}
void convertir::conv_rublo(float cant, float rublo)
{
rublo=cant * 3;
}


void main(void)
{
float a,b,c,d;
cout<<"Introdusca la cantidad en pesos";
cin>>a;
dinero.leee_pesos(a);
b=dinero.conv_dolar(float dolar);
c=dinero.conv_euro(float euro);
d=dinero.conv_rublo(float dolar);
cout<<"EL cambio de moneda en Dolar"<<b
    <<"                        euro"<<c
    <<"                       rublo"<<d;
}

expresion de sintaxis en las ultimas lineas donde esta "b,c y d"

Editado -- Mar Abr 05, 2011 8:35 pm --

perdon mas espesifico es en estas 3 lineas
b=dinero.conv_dolar(float dolar);
c=dinero.conv_euro(float euro);
d=dinero.conv_rublo(float dolar);
Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: Ayuda con clases en lenguaje c++

Mensaje por hipersayan_x » Mié Abr 06, 2011 6:24 am

Así es lo correcto:

Código: Seleccionar todo

b=dinero.conv_dolar(dolar);
c=dinero.conv_euro(euro);
d=dinero.conv_rublo(dolar);
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net
abuelo_dante
Forista Nuevo
Forista Nuevo
Mensajes: 15
Registrado: Mié Abr 06, 2011 3:13 am

Re: Ayuda con clases en lenguaje c++

Mensaje por abuelo_dante » Jue Abr 07, 2011 1:28 am

waaaa, me manda que esta que esta indefinido el simbolo dolar euro y rublo en los mismos renglones
Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: Ayuda con clases en lenguaje c++

Mensaje por hipersayan_x » Jue Abr 07, 2011 1:48 am

Y si, obvio, tenes que declarar esas variables al principio de main o antes de usarlas y asignarles un valor.
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net
abuelo_dante
Forista Nuevo
Forista Nuevo
Mensajes: 15
Registrado: Mié Abr 06, 2011 3:13 am

Re: Ayuda con clases en lenguaje c++

Mensaje por abuelo_dante » Jue Abr 07, 2011 1:58 am

pero ya estan declaradas, en la clase convertir, y son privadas
Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: Ayuda con clases en lenguaje c++

Mensaje por hipersayan_x » Jue Abr 07, 2011 2:08 am

Las variables son locales al bloque a menos que se las declare como globales.
Las propiedades dolar, euro y rublo de la clase convertir son locales a la clase convertir, y son distintas de las variables dolar, euro y rublo de la función main y son locales a dicha función.

https://secure.wikimedia.org/wikibooks/ ... _una_clase
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net
abuelo_dante
Forista Nuevo
Forista Nuevo
Mensajes: 15
Registrado: Mié Abr 06, 2011 3:13 am

Re: Ayuda con clases en lenguaje c++

Mensaje por abuelo_dante » Vie Abr 08, 2011 11:10 pm

eso si lo entendi, pero entonces como le haria para que llamen los datos que se sustituieron en las funciones conv dolar, conv euro, conv rublo, y que los pongan en main
Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: Ayuda con clases en lenguaje c++

Mensaje por hipersayan_x » Sab Abr 09, 2011 1:31 am

El creador del C++ de debe estar agarrando la cabeza, leyendo detenidamente tu código, todo el código esta mal diseñado.
Por ejemplo, esta es tu implementación de conv_rublo:

Código: Seleccionar todo

d = dinero.conv_rublo(float dolar);
Y esta es su definición:

Código: Seleccionar todo

void convertir::conv_rublo(float cant, float rublo)
{
rublo=cant * 3;
}
Cuando debería ser:

Código: Seleccionar todo

d = dinero.conv_rublo(dolar);
Y así su definición:

Código: Seleccionar todo

float convertir::conv_rublo(float dolar)
{
    return dolar * 3;
}
Se que mi respuesta puede parecer hostil, no es mi intención, pero es que son muy notorios los errores de concepto.
Aquí dejo un muy buen manual de C++:

http://mat21.etsii.upm.es/ayudainf/apre ... ualcpp.pdf

Editado -- Vie Abr 08, 2011 8:31 pm --

Y ya que estamos, a lo de arriba se le llama pasar variables por valor, también se pueden pasar valores por referencia, muy poco practico para este caso pero posible.
Implementación:

Código: Seleccionar todo

dinero.conv_rublo(dolar, &rublo);
Y así su definición:

Código: Seleccionar todo

float convertir::conv_rublo(float dolar, float *rublo)
{
    *rublo = dolar * 3;
}
No es lo correcto, pero se parece mas a lo que quisiste hacer.
Luego haciendo:

Código: Seleccionar todo

cout << rublo;
Ya sea por valor o por referencia ambos devuelven el mismo valor de la conversión :)
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net
abuelo_dante
Forista Nuevo
Forista Nuevo
Mensajes: 15
Registrado: Mié Abr 06, 2011 3:13 am

Re: Ayuda con clases en lenguaje c++

Mensaje por abuelo_dante » Jue Abr 14, 2011 1:41 am

Código: Seleccionar todo

#include <iostream>
#include <math>
#include <conio>
class convertir{
     private:
    float dolar;
    float euro;
    float rublo;
    float *cant;
     public:
     convertir();
     convertir(float dolar, float euro, float rublo);
     ~convertir();
     leee_pesos(float a);
     conv_dolar(float);
     conv_euro(float);
      conv_rublo(float);
}dinero;
convertir::convertir(){}

 convertir::convertir(float dolar, float euro, float rublo)
{
 dolar=euro=rublo=0;
}
convertir::leee_pesos(float a)
{
 dolar =euro=rublo=a;

}
convertir::~convertir()
 { cout<<"Finaliza el programa";
 }
convertir::conv_dolar(float dolar)
{
 return (dolar * 13);
}
convertir::conv_euro(float euro)
{
 return (euro * 18);
}
convertir::conv_rublo(float rublo)
{
return (rublo* 3);
}


void main()
{
 float dolar, euro, rublo;
 float a,b,c,d;
cout<<"Introdusca la cantidad en pesos";
cin>>a;
dinero.leee_pesos(a);
b=dinero.conv_dolar(dolar);
c=dinero.conv_euro(euro);
d=dinero.conv_rublo(rublo);
cout <<b
     <<c
     <<d;
getch();
}
ya lo cambie pero a la hora de introducir el valor de pesos y que haga las operaciones me da 000, pero antes me dice que el programa no es seguro de abrir.
Avatar de Usuario
DaemonuX
Forista Nuevo
Forista Nuevo
Mensajes: 11
Registrado: Mié May 18, 2011 6:21 pm
Ubicación: Santiago de Chile

Re: Ayuda con clases en lenguaje c++

Mensaje por DaemonuX » Mié May 18, 2011 11:16 pm

esta excelente el manual XD
ya conocía estos manuales de aprenda como si estuviera en primero, pero nunca había visto un de C++
"Lo que creamos o lo que pensemos no tiene mayor importancia si no hacemos algo al respecto"
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje