Autor
|
Tema: Programacion orientada a objetos (Leído 3,702 veces)
|
cazagavilan
Desconectado
Mensajes: 82
|
Buenas de nuevo, Tengo este codigo y lo que me falla es cuando "vehiculo" acelera... Me aparece por pantalla -8524654846( mas o menos) y no se por que es. Gracias! #include<iostream> using namespace std; class vehiculo { private: int litros; int kphMas; int kphMenos; int veloActual; int capaDepo; int año; int capDepo; int liDepo; char *propietario[25]; public: vehiculo(int veloActual, int liDepo, int capDepo, int año); ~vehiculo(); void imprimir(int año, char *propietario); int llenarDepo(); int acelerar(int kphMas); int frenar(int kphMenos); void nPropietario(char* propietario); }; vehiculo::vehiculo(int veloActualual, int liDepo, int capDepo, int año) { } vehiculo::~vehiculo() { } int vehiculo::llenarDepo() { for(; liDepo <= capDepo; liDepo++) { cout << "El deposito esta lleno" << endl; } return liDepo; } void vehiculo::imprimir(int año, char*propietario) { cout << "La velocidad actual es: "<< veloActual << endl; cout << "El año del coche es: " << año << endl; cout << "En el deposito hay: " << liDepo << endl; cout << "El nombre del propietario es: " << *propietario << endl; } int vehiculo::acelerar(int kphMas) { cout << "Estas acelerando!" << endl; veloActual = veloActual + kphMas; liDepo = liDepo - kphMas / 2; cout << "Su velocidad actual es: " << veloActual << endl; cout << "Su deposito actual es: " << liDepo << endl; return veloActual; return liDepo; } int vehiculo::frenar(int kphMenos) { if( veloActual >= 0) { cout << "Estas frenando!" << endl; veloActual = veloActual - kphMenos; cout << "Su velocidad actual es: " << veloActual << endl; } else { cout << "Ya estas parado!" << endl; } return veloActual; } void vehiculo::nPropietario( char* propietario) { propietario[0] = 'P'; propietario[1] = 'e'; propietario[2] = 'p'; propietario[3] = 'e'; cout << "EL nombre del propietario es: " << *propietario << endl; } int main() { vehiculo mercedes(0, 60, 60, 1990); mercedes.acelerar(50); mercedes.acelerar(50); mercedes.acelerar(50); mercedes.frenar(20); mercedes.frenar(65); mercedes.frenar(65); mercedes.frenar(10); system("pause"); return 0; }
|
|
|
En línea
|
|
|
|
maxim_o
Desconectado
Mensajes: 186
|
Asi a ojo la funcion acelerar devuelve dos return... int vehiculo::acelerar(int kphMas) { cout << "Estas acelerando!" << endl; veloActual = veloActual + kphMas; liDepo = liDepo - kphMas / 2; cout << "Su velocidad actual es: " << veloActual << endl; cout << "Su deposito actual es: " << liDepo << endl; return veloActual; return liDepo; // este nunca se cumple, Sale antes devolviendo VeloActual }
De echo los return podrias hasta quitarlos y hacer void ya que desde donde la llamas no almacenas el valor devuelto.
Y supongo que el error por el que no te da el resultado esperado es que en el constructor: vehiculo::vehiculo(int veloActualual, int liDepo, int capDepo, int año) Si te fijas no es veloActual, sino veloActualual, por lo que la variable veloActual esta sin inicializar y por eso te da esos valores....
|
|
|
En línea
|
|
|
|
cazagavilan
Desconectado
Mensajes: 82
|
Ya esta resuelto. Aparte de lo que tu decias, tambien era por que el constructor no inicializaba los atributos de la clase con sus parametros.
Gracias.
|
|
|
En línea
|
|
|
|
cazagavilan
Desconectado
Mensajes: 82
|
Ahora tengo otro problema... no consigo introducir el nombre del propietario o me da error o me da simbolos extraños.. #include<iostream> using namespace std; class vehiculo { private: int veloInicial; int añoInicial; int capDepoInicial; int lidepoInicial; int litros; int kphMas; int kphMenos; int veloActual; int capaDepo; int año; int capDepo; int liDepo; public: vehiculo(int veloInicial, int liInicial, int capDepoInicial, int añoInicial); ~vehiculo(); void imprimir(); void llenarDepo(); void acelerar(int kphMas); void frenar(int kphMenos); }; vehiculo::vehiculo(int veloInicial, int liInicial, int capDepoInicial, int añoInicial) { veloActual = veloInicial; liDepo = liInicial; capDepo = capDepoInicial; año = añoInicial; } vehiculo::~vehiculo() { } void vehiculo::llenarDepo() { for(; liDepo < capDepo; liDepo++) { } cout << "El deposito esta lleno" << endl << endl; } void vehiculo::imprimir() { cout << "La velocidad actual es: "<< veloActual << endl; cout << "El año del coche es: " << año << endl; cout << "En el deposito hay: " << liDepo << endl; cout << "El nombre del propietario es: " << endl << endl; } void vehiculo::acelerar(int kphMas) { if(liDepo > 0) { cout << "Estas acelerando!" << endl; veloActual = veloActual + kphMas; liDepo = liDepo - kphMas / 10; cout << "Su velocidad actual es: " << veloActual << endl; cout << "Su deposito actual es: " << liDepo << endl << endl; } else { cout << "El deposito esta vacio!" << endl << endl; } } void vehiculo::frenar(int kphMenos) { if( veloActual - kphMenos > 0) { cout << "Estas frenando!" << endl; veloActual = veloActual - kphMenos; cout << "Su velocidad actual es: " << veloActual << endl << endl; } else { veloActual = 0; cout << "Ya estas parado!" << endl << endl; } } int main() { vehiculo mercedes(0, 60, 60, 1990); mercedes.acelerar(50); mercedes.acelerar(50); mercedes.acelerar(50); mercedes.frenar(50); mercedes.frenar(50); mercedes.frenar(60); mercedes.acelerar(50); mercedes.llenarDepo(); mercedes.imprimir(); system("pause"); return 0; }
Muchas gracias.
|
|
|
En línea
|
|
|
|
cazagavilan
Desconectado
Mensajes: 82
|
Solucionado. #include<iostream> #include<cstring> using namespace std; class vehiculo { private: char *cad; int veloInicial; int añoInicial; int capDepoInicial; int lidepoInicial; int litros; int kphMas; int kphMenos; int veloActual; int capaDepo; int año; int capDepo; int liDepo; public: vehiculo(int veloInicial, int liInicial, int capDepoInicial, int añoInicial, const char *c); ~vehiculo(); void imprimir(); void llenarDepo(); void acelerar(int kphMas); void frenar(int kphMenos); char *leer(char *c); }; char propietario[] = "Jonathan Gavilan Mora"; vehiculo::vehiculo(int veloInicial, int liInicial, int capDepoInicial, int añoInicial, const char *c) { veloActual = veloInicial; liDepo = liInicial; capDepo = capDepoInicial; año = añoInicial; cad = new char[strlen(c)+1]; strcpy(cad, c); } vehiculo::~vehiculo() { delete [] cad; } char *vehiculo::leer(char* c) { strcpy(c, cad); return c; } void vehiculo::llenarDepo() { cout << "Estas llenando el deposito..." << endl; for(; liDepo < capDepo; liDepo++) { } cout << "El deposito esta lleno: " << liDepo<< " Litros."<< endl << endl; } void vehiculo::imprimir() { cout << "La velocidad actual es: "<< veloActual << endl; cout << "El año del coche es: " << año << endl; cout << "En el deposito hay: " << liDepo << endl; cout << "El nombre del propietario es: " << propietario <<endl << endl; } void vehiculo::acelerar(int kphMas) { if(liDepo > 0) { cout << "Estas acelerando!" << endl; veloActual = veloActual + kphMas; liDepo = liDepo - kphMas / 10; cout << "Su velocidad actual es: " << veloActual << endl; cout << "Su deposito actual es: " << liDepo << endl << endl; } else { cout << "El deposito esta vacio!" << endl << endl; } } void vehiculo::frenar(int kphMenos) { if( veloActual - kphMenos > 0) { cout << "Estas frenando!" << endl; veloActual = veloActual - kphMenos; cout << "Su velocidad actual es: " << veloActual << endl << endl; } else { veloActual = 0; cout << "Ya estas parado!" << endl << endl; } } int main() { vehiculo mercedes(0, 60, 60, 1990, "Jonathan Gavilan Mora"); mercedes.acelerar(50); mercedes.acelerar(50); mercedes.acelerar(50); mercedes.frenar(50); mercedes.frenar(50); mercedes.frenar(60); mercedes.acelerar(50); mercedes.llenarDepo(); mercedes.imprimir(); system("pause"); return 0; }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Programacion orientada a objetos en php, ide
PHP
|
wizache
|
2
|
4,645
|
11 Marzo 2008, 02:44 am
por [ Alberto]
|
|
|
[Fundamentos] Programación Orientada a Objetos
Programación General
|
AFelipeTrujillo
|
5
|
5,869
|
3 Septiembre 2010, 20:16 pm
por AFelipeTrujillo
|
|
|
programacion orientada a objetos con C#
.NET (C#, VB.NET, ASP)
|
Bleach@lex
|
3
|
5,348
|
21 Abril 2012, 19:55 pm
por Bleach@lex
|
|
|
Ayuda con Programacion Orientada a Objetos C++
Programación C/C++
|
ovg17
|
3
|
2,866
|
27 Enero 2013, 01:42 am
por amchacon
|
|
|
ayuda con programación orientada a objetos c++
Programación C/C++
|
indict
|
0
|
2,211
|
31 Marzo 2013, 00:17 am
por indict
|
|