Hola a todos,
miren estoy haciendo este ejercicio y tengo unos errores que no se como puedo solucionarlos. Esperaba que me pudieseis ayudar.
El ejercicio esta dividido en dos partes, la primera la tengo echa y funcionando pero la segunda me esta costando mucho mas.
Aquí os dejo las diferentes partes del ejercicio.
Enunciado:
1ª Escribe una clase Vehículo con los siguientes atributos (privados):
• año: año de fabricación. Entero
• CapDepo: Capacidad del deposito en litros. Entero
• LitrosDepo: Litros en el deposito. Tiene que ser menor que CapDepo. Entero
• Kph: Km/h del vehiculo. Entero
• Propietario: cadena de caracteres de 25 posiciones
Y los siguientes métodos públicos:
• Imprimir ()
• LlenarDeposito (int nLitros)
• Todas las funciones necesarias para acceder al valor de los atributos y
modificarlos.
Además has de crear tres constructores: uno por defecto, otro con parámetros y otro de
copia.
Por ultimo crea un procedimiento principal donde
2ª Crea dos clases derivadas de Vehículo que serán Coche y Moto. El coche tendrá como
atributos propios
• NumAsientos: numero de asientos. Entero
• Marca: marca del coche. Cadena de caracteres de 10 posiciones.
La moto tendrá como atributos propios:
• Cilindrada: Entero
• Tipo : cadena de caracteres de 20 posiciones que indicia le tipo de moto (trial,
cross, custom...)
En ambas clases crea los métodos que permitan acceder a los atributos privados y
solapa la función imprimir para que muestre la información propia aparte de la
general.
He logrado hacer diferentes archivos de encabezado ".h"y otros tanto ".cpp" pero me corren exactamente 6 errores. Aquí os dejo el código por partes:
Primer los cuatro ".cpp":
Moto.cpp
#include "Moto.h"
#include <iostream>
using namespace std;
void Moto::Imprimir()
{
cout << "Cilindrada de la Moto: " << cilindrada() << endl;
cout << "Tipo de Moto: " << tipo() << endl;
}
Coche.cpp
#include "Coche.h"
#include <iostream>
using namespace std;
void Coche::Imprimir()
{
cout << "Numero de asientos: " << this -> marca() << endl;
cout << "Marca del Coche: " << this -> asientos() << endl;
}
Vehiculo.cpp
#include "Vehiculo.h"
#include <iostream>
using namespace std;
void Vehiculo::Imprimir()
{
cout << "Propietario: " << this->GetPropietario() << endl;
cout << "año de fabricacion: " << this->GetAño() << endl;
cout << "Capacidad del deposito: " << this->GetCapDepo() << " Litros. ";
cout << this->GetLitrosDepo() << " Litros actualmente" << endl;
cout << "Velocidad maxima: " << this->GetKph() << " Km/h" << endl;
}
int Vehiculo::LlenarDeposito(int litros)
{
this->SetLitrosDepo(this->GetLitrosDepo() + litros);
return this->GetLitrosDepo();
}
Source.cpp
#include <iostream>
#include <iomanip>
#include "Vehiculo.h"
using namespace std;
int main(){
Vehiculo vehiculoA;
cout << "VEHICULO A - Constructor por defecto" << endl;
vehiculoA.Imprimir();
cout << "-------------------------------" << endl;
cout << endl;
cout << "VEHICULO A - SetPropietario(\"Bruce Willis\")" << endl;
vehiculoA.SetPropietario("Bruce Willis");
vehiculoA.Imprimir();
cout << "-------------------------------" << endl;
cout << endl;
cout << "VEHICULO A - LlenarDeposito(50)" << endl;
vehiculoA.LlenarDeposito(50);
vehiculoA.Imprimir();
cout << "-------------------------------" << endl;
cout << endl;
cout << "VEHICULO A - LlenarDeposito(500)" << endl;
vehiculoA.LlenarDeposito(500);
vehiculoA.Imprimir();
cout << "-------------------------------" << endl;
cout << endl;
cout << "_____________________________________________________________________" << endl;
Vehiculo vehiculoB(1987, 55, 180);
cout << "VEHICULO B - Constructor(1987, 55, 180)" << endl;
vehiculoB.Imprimir();
cout << "-------------------------------" << endl;
cout << endl;
cout << "VEHICULO B - SetPropietario(\"Jennifer Aniston\")" << endl;
vehiculoB.SetPropietario("Jennifer Aniston");
vehiculoB.Imprimir();
cout << "-------------------------------" << endl;
cout << endl;
cout << "_____________________________________________________________________" << endl;
Vehiculo vehiculoC(vehiculoB);
cout << "VEHICULO C - Constructor copia(Vehiculo B)" << endl;
vehiculoC.Imprimir();
cout << "-------------------------------" << endl;
cout << endl;
cout << endl << endl;
system("Pause");
}
Ahora pondré los ".h"que son tres:
Moto.h
#include <string>
class Moto{
private:
char* tipo;
int cilindrada;
public:
void Imprimir();
void Settipo(char*);
char* Gettipo();
}
Coche.h
[COLOR="teal"]#include <string>
class Coche{
private:
char* marca;
int asientos;
public:
void Imprimir();
void SetMarca(char*);
char* GetMarca();
}[/color]
Vehiculo.h
#include <string>
class Vehiculo{
private:
int año;
int capDepo;
int litrosDepo;
int kph;
char propietario[25];
public:
Vehiculo(){
SetAño(2000);
SetCapDepo(100);
SetLitrosDepo(0);
SetKph(300);
SetPropietario("");
}
Vehiculo(int _año, int _cap, int _kph){
SetAño(_año);
SetCapDepo(_cap);
SetLitrosDepo(0);
SetKph(_kph);
SetPropietario("");
}
Vehiculo(const Vehiculo &v){
SetAño(v.año);
SetCapDepo(v.capDepo);
SetLitrosDepo(v.litrosDepo);
SetKph(v.kph);
SetPropietario((char*) v.propietario);
}
//PUBLIC METHODS==========
public:
void Imprimir();
int LlenarDeposito(int litros);
//GETTERS=================
public:
int GetAño(){
return año;
}
int GetCapDepo(){
return capDepo;
}
int GetLitrosDepo(){
return litrosDepo;
}
int GetKph(){
return kph;
}
char* GetPropietario(){
return propietario;
}
//SETTERS=================
public:
void SetAño(int _año){
año = _año;
}
void SetCapDepo(int _cap){
capDepo = _cap;
}
void SetLitrosDepo(int _litros){
litrosDepo = _litros;
if (litrosDepo > GetCapDepo())
SetLitrosDepo(GetCapDepo());
}
void SetKph(int _kph){
kph = _kph;
}
void SetPropietario(char* _propietario){
strcpy_s(propietario, _propietario);
}
};
Y esto es los que sucede cuando genero el código:
1>Compilando...
1>Coche.cpp
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\iostream(12) : error C2143: error de sintaxis : falta ';' delante de 'namespace'
1>c:\users\007\desktop\app\programacion c++\tema 9\ejercicio 2\ejercicio 2\coche.cpp(8) : error C2064: el término no se evalúa como una función con 0 argumentos
1>c:\users\007\desktop\app\programacion c++\tema 9\ejercicio 2\ejercicio 2\coche.cpp(9) : error C2064: el término no se evalúa como una función con 0 argumentos
1>Moto.cpp
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\iostream(12) : error C2143: error de sintaxis : falta ';' delante de 'namespace'
1>c:\users\007\desktop\app\programacion c++\tema 9\ejercicio 2\ejercicio 2\moto.cpp(8) : error C2064: el término no se evalúa como una función con 0 argumentos
1>c:\users\007\desktop\app\programacion c++\tema 9\ejercicio 2\ejercicio 2\moto.cpp(9) : error C2064: el término no se evalúa como una función con 0 argumentos
1>Source.cpp
1>Vehiculo.cpp
1>Generando código...
1>El registro de compilación se guardó en el "file://c:\Users\007\Desktop\App\Programacion C++\Tema 9\Ejercicio 2\Ejercicio 2\Debug\BuildLog.htm"
1>Ejercicio 2 - 6 errores, 0 advertencias
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========
¿Como solucionaría esos errores?
Muchas gracias de antemano, y un gran saludo
miren estoy haciendo este ejercicio y tengo unos errores que no se como puedo solucionarlos. Esperaba que me pudieseis ayudar.
El ejercicio esta dividido en dos partes, la primera la tengo echa y funcionando pero la segunda me esta costando mucho mas.
Aquí os dejo las diferentes partes del ejercicio.
Enunciado:
1ª Escribe una clase Vehículo con los siguientes atributos (privados):
• año: año de fabricación. Entero
• CapDepo: Capacidad del deposito en litros. Entero
• LitrosDepo: Litros en el deposito. Tiene que ser menor que CapDepo. Entero
• Kph: Km/h del vehiculo. Entero
• Propietario: cadena de caracteres de 25 posiciones
Y los siguientes métodos públicos:
• Imprimir ()
• LlenarDeposito (int nLitros)
• Todas las funciones necesarias para acceder al valor de los atributos y
modificarlos.
Además has de crear tres constructores: uno por defecto, otro con parámetros y otro de
copia.
Por ultimo crea un procedimiento principal donde
2ª Crea dos clases derivadas de Vehículo que serán Coche y Moto. El coche tendrá como
atributos propios
• NumAsientos: numero de asientos. Entero
• Marca: marca del coche. Cadena de caracteres de 10 posiciones.
La moto tendrá como atributos propios:
• Cilindrada: Entero
• Tipo : cadena de caracteres de 20 posiciones que indicia le tipo de moto (trial,
cross, custom...)
En ambas clases crea los métodos que permitan acceder a los atributos privados y
solapa la función imprimir para que muestre la información propia aparte de la
general.
He logrado hacer diferentes archivos de encabezado ".h"y otros tanto ".cpp" pero me corren exactamente 6 errores. Aquí os dejo el código por partes:
Primer los cuatro ".cpp":
Moto.cpp
#include "Moto.h"
#include <iostream>
using namespace std;
void Moto::Imprimir()
{
cout << "Cilindrada de la Moto: " << cilindrada() << endl;
cout << "Tipo de Moto: " << tipo() << endl;
}
Coche.cpp
#include "Coche.h"
#include <iostream>
using namespace std;
void Coche::Imprimir()
{
cout << "Numero de asientos: " << this -> marca() << endl;
cout << "Marca del Coche: " << this -> asientos() << endl;
}
Vehiculo.cpp
#include "Vehiculo.h"
#include <iostream>
using namespace std;
void Vehiculo::Imprimir()
{
cout << "Propietario: " << this->GetPropietario() << endl;
cout << "año de fabricacion: " << this->GetAño() << endl;
cout << "Capacidad del deposito: " << this->GetCapDepo() << " Litros. ";
cout << this->GetLitrosDepo() << " Litros actualmente" << endl;
cout << "Velocidad maxima: " << this->GetKph() << " Km/h" << endl;
}
int Vehiculo::LlenarDeposito(int litros)
{
this->SetLitrosDepo(this->GetLitrosDepo() + litros);
return this->GetLitrosDepo();
}
Source.cpp
#include <iostream>
#include <iomanip>
#include "Vehiculo.h"
using namespace std;
int main(){
Vehiculo vehiculoA;
cout << "VEHICULO A - Constructor por defecto" << endl;
vehiculoA.Imprimir();
cout << "-------------------------------" << endl;
cout << endl;
cout << "VEHICULO A - SetPropietario(\"Bruce Willis\")" << endl;
vehiculoA.SetPropietario("Bruce Willis");
vehiculoA.Imprimir();
cout << "-------------------------------" << endl;
cout << endl;
cout << "VEHICULO A - LlenarDeposito(50)" << endl;
vehiculoA.LlenarDeposito(50);
vehiculoA.Imprimir();
cout << "-------------------------------" << endl;
cout << endl;
cout << "VEHICULO A - LlenarDeposito(500)" << endl;
vehiculoA.LlenarDeposito(500);
vehiculoA.Imprimir();
cout << "-------------------------------" << endl;
cout << endl;
cout << "_____________________________________________________________________" << endl;
Vehiculo vehiculoB(1987, 55, 180);
cout << "VEHICULO B - Constructor(1987, 55, 180)" << endl;
vehiculoB.Imprimir();
cout << "-------------------------------" << endl;
cout << endl;
cout << "VEHICULO B - SetPropietario(\"Jennifer Aniston\")" << endl;
vehiculoB.SetPropietario("Jennifer Aniston");
vehiculoB.Imprimir();
cout << "-------------------------------" << endl;
cout << endl;
cout << "_____________________________________________________________________" << endl;
Vehiculo vehiculoC(vehiculoB);
cout << "VEHICULO C - Constructor copia(Vehiculo B)" << endl;
vehiculoC.Imprimir();
cout << "-------------------------------" << endl;
cout << endl;
cout << endl << endl;
system("Pause");
}
Ahora pondré los ".h"que son tres:
Moto.h
#include <string>
class Moto{
private:
char* tipo;
int cilindrada;
public:
void Imprimir();
void Settipo(char*);
char* Gettipo();
}
Coche.h
[COLOR="teal"]#include <string>
class Coche{
private:
char* marca;
int asientos;
public:
void Imprimir();
void SetMarca(char*);
char* GetMarca();
}[/color]
Vehiculo.h
#include <string>
class Vehiculo{
private:
int año;
int capDepo;
int litrosDepo;
int kph;
char propietario[25];
public:
Vehiculo(){
SetAño(2000);
SetCapDepo(100);
SetLitrosDepo(0);
SetKph(300);
SetPropietario("");
}
Vehiculo(int _año, int _cap, int _kph){
SetAño(_año);
SetCapDepo(_cap);
SetLitrosDepo(0);
SetKph(_kph);
SetPropietario("");
}
Vehiculo(const Vehiculo &v){
SetAño(v.año);
SetCapDepo(v.capDepo);
SetLitrosDepo(v.litrosDepo);
SetKph(v.kph);
SetPropietario((char*) v.propietario);
}
//PUBLIC METHODS==========
public:
void Imprimir();
int LlenarDeposito(int litros);
//GETTERS=================
public:
int GetAño(){
return año;
}
int GetCapDepo(){
return capDepo;
}
int GetLitrosDepo(){
return litrosDepo;
}
int GetKph(){
return kph;
}
char* GetPropietario(){
return propietario;
}
//SETTERS=================
public:
void SetAño(int _año){
año = _año;
}
void SetCapDepo(int _cap){
capDepo = _cap;
}
void SetLitrosDepo(int _litros){
litrosDepo = _litros;
if (litrosDepo > GetCapDepo())
SetLitrosDepo(GetCapDepo());
}
void SetKph(int _kph){
kph = _kph;
}
void SetPropietario(char* _propietario){
strcpy_s(propietario, _propietario);
}
};
Y esto es los que sucede cuando genero el código:
1>Compilando...
1>Coche.cpp
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\iostream(12) : error C2143: error de sintaxis : falta ';' delante de 'namespace'
1>c:\users\007\desktop\app\programacion c++\tema 9\ejercicio 2\ejercicio 2\coche.cpp(8) : error C2064: el término no se evalúa como una función con 0 argumentos
1>c:\users\007\desktop\app\programacion c++\tema 9\ejercicio 2\ejercicio 2\coche.cpp(9) : error C2064: el término no se evalúa como una función con 0 argumentos
1>Moto.cpp
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\iostream(12) : error C2143: error de sintaxis : falta ';' delante de 'namespace'
1>c:\users\007\desktop\app\programacion c++\tema 9\ejercicio 2\ejercicio 2\moto.cpp(8) : error C2064: el término no se evalúa como una función con 0 argumentos
1>c:\users\007\desktop\app\programacion c++\tema 9\ejercicio 2\ejercicio 2\moto.cpp(9) : error C2064: el término no se evalúa como una función con 0 argumentos
1>Source.cpp
1>Vehiculo.cpp
1>Generando código...
1>El registro de compilación se guardó en el "file://c:\Users\007\Desktop\App\Programacion C++\Tema 9\Ejercicio 2\Ejercicio 2\Debug\BuildLog.htm"
1>Ejercicio 2 - 6 errores, 0 advertencias
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========
¿Como solucionaría esos errores?
Muchas gracias de antemano, y un gran saludo