Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - cazagavilan

#11
Programación C/C++ / Re: herencia
23 Abril 2012, 19:14 PM
Muchas gracias lo probare!
#12
Programación C/C++ / herencia
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...

Código (cpp) [Seleccionar]
#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
Solucionado.

Código (cpp) [Seleccionar]
#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
Ahora tengo otro problema... no consigo introducir el nombre del propietario
o me da error o me da simbolos extraños..

Código (cpp) [Seleccionar]
#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.
#15
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.
#16
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!
Código (cpp) [Seleccionar]
#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
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!
Código (cpp) [Seleccionar]
#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;
}
#18
Programación C/C++ / Re: Punteros y arrays
14 Abril 2012, 19:32 PM
Gracias!
#19
Programación C/C++ / Re: Punteros y arrays
14 Abril 2012, 12:44 PM
Me puedes explicar un poco lo de (valor -1).

Gracias!
#20
Programación C/C++ / Punteros y arrays
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.
Código (cpp) [Seleccionar]
#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.