|
Mostrar Mensajes
|
Páginas: 1 [2] 3 4 5 6 7 8 9
|
12
|
Programación / Programación C/C++ / herencia
|
en: 23 Abril 2012, 17:28 pm
|
Hola, De momento tengo este codigo(no esta acabado) pero ya me da error en los dos constructores (tengo un codigo donde solo sale la clase vehiculo y no me da error) y bueno a ver si me podeis ayudar por que vaya cacao llevo... #include<iostream> #include<cstring> using namespace std; //Declaracion clase VEHICULO class vehiculo { protected: char *cad; 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); }; //Declaracion derivada MOTO class moto : public vehiculo { protected: int cilindrada; int cilinInicial; char *tipo; public: moto(int veloInicial,int liInicial, int capDepoInicial, int añoInicial, int cilinInicial, const char* c, const char *c1); ~moto(); char* leer1(char*c1); } //Constructor VEHICULO 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); } //Destructor VEHICULO vehiculo::~vehiculo() { delete [] cad; } //Metodo leer VEHICULO char *vehiculo::leer(char* c) { strcpy(c, cad); return c; } // Metodo llenar deposito VEHICULO void vehiculo::llenarDepo() { cout << "Estas llenando el deposito..." << endl; for(; liDepo < capDepo; liDepo++) { } cout << "El deposito esta lleno: " << liDepo<< " Litros."<< endl << endl; } // Metodo imprimir VEHICULO 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: " << *cad <<endl << endl; } // Metodo acelerar VEHICULO 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; } } // Metodo frenar VEHICULO 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; } } // Constructor MOTO moto::moto(int veloInicial,int liInicial, int capDepoInicial, int añoInicial, int cilinInicial,const char* c, const char *c1): vehiculo( veloInicial, liInicial, capDepoInicial, añoInicial, *c) { veloActual = veloInicial; liDepo = liInicial; capDepo = capDepoInicial; año = añoInicial; cad = new char[strlen(c)+1]; strcpy(cad, c); cilindrada = cilinInicial; tipo = new char[strlen(c1)+1]; strcpy(tipo, c1); } // Destructor Moto moto::~moto() { delete [] tipo; } // Metodo leer MOTO char *moto::leer1(char* c1) { strcpy(c1, tipo); return c1; }
Puede que haya cambiado algo de la clase base sin darme cuenta de tanto probar. Muchas gracias!
|
|
|
13
|
Programación / Programación C/C++ / Re: Programacion orientada a objetos
|
en: 21 Abril 2012, 10:55 am
|
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; }
|
|
|
14
|
Programación / Programación C/C++ / Re: Programacion orientada a objetos
|
en: 21 Abril 2012, 10:15 am
|
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.
|
|
|
16
|
Programación / Programación C/C++ / Programacion orientada a objetos
|
en: 21 Abril 2012, 00:17 am
|
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; }
|
|
|
17
|
Programación / Programación C/C++ / Duda archivos abiertos en formato binario
|
en: 17 Abril 2012, 06:05 am
|
Buenos dias, He hecho este codigo para abrir una imagen en formato binario, y ahora me piden que modifique unos cuantos bytes de la mitad de la imagen mas o menos.. A ver si me podeis ayudar un poco por que no se me ocurre nada... Como siempre, muchas gracias! #include <iostream> #include <fstream> #include <string> using namespace std; int main() { string line; fstream mi_archivo ("C:\\Users\\jona\\Desktop\\ejercicios dos\\8.5\\pepe.png",ios::in|ios::binary); if(mi_archivo.is_open()) { while(! mi_archivo.eof()) { getline(mi_archivo, line); cout << line << endl; } mi_archivo.close(); } else cout << "Error al abrir el archivo" << endl; system("pause"); return 0; }
|
|
|
20
|
Programación / Programación C/C++ / Punteros y arrays
|
en: 14 Abril 2012, 09:31 am
|
Buenas! Tengo este ejercicio en el que el usuario introuce cuantos numeros va a introducir... luego pide los numeros y luego los muestra enorden inverso. #include <iostream> #include <new> using namespace std; int main() { int numero; int valor; int* puntero; cout << "Cuantos numeros desea introducir? " << endl; cin >> valor; puntero = new (nothrow) int[valor]; if(puntero == 0) cout << " Error... no se pudieron introducir los valores..." << endl; else { cout << "Introduzca los numero de uno en uno.. ejemplo( 1 (enter)... 2(enter)...)" << endl; for(numero= 0; numero < valor; numero++) { cout << "Introduzca el numero: " << endl; cin >> puntero[numero]; cout << endl; } for(int i = valor; i > 0; i--) { cout << puntero[i] <<endl; } } system("pause"); return 0; }
Da error en el primer numero que introduce para invertir. Muchas gracias.
|
|
|
|
|
|
|