From 44826a2687835a7f92ebf48f049c7ed7b3767b47 Mon Sep 17 00:00:00 2001 From: Pablo Date: Sun, 9 Nov 2025 22:12:40 +0100 Subject: [PATCH] terminado parte1 --- parte1/bin/programa | Bin 0 -> 42504 bytes parte1/include/Cliente.h | 31 ++++++++++++ parte1/include/Fecha.h | 31 ++++++++++++ parte1/src/Cliente.cpp | 58 +++++++++++++++++++++++ parte1/src/Fecha.cpp | 99 +++++++++++++++++++++++++++++++++++++++ parte1/src/main.cpp | 63 +++++++++++++++++++++++++ parte2/Makefile | 39 +++++++++++++++ 7 files changed, 321 insertions(+) create mode 100755 parte1/bin/programa create mode 100644 parte1/include/Cliente.h create mode 100644 parte1/include/Fecha.h create mode 100644 parte1/src/Cliente.cpp create mode 100644 parte1/src/Fecha.cpp create mode 100644 parte1/src/main.cpp create mode 100644 parte2/Makefile diff --git a/parte1/bin/programa b/parte1/bin/programa new file mode 100755 index 0000000000000000000000000000000000000000..2ccd7f17202364a1f3434a31ea7b0e4874dab0cc GIT binary patch literal 42504 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 //cin, cout +#include "Fecha.h" + +using namespace std; +//SI FALTA ALGUN METODO O FUNCION A袮DIRLO... +class Cliente { + long int dni; + char *nombre; + Fecha fechaAlta; +public: + Cliente(long int d, const char *nom, Fecha f); + virtual ~Cliente(); + Cliente& operator=(const Cliente& c); + + long int getDni() const { return this->dni; } + const char* getNombre() const { return nombre; } //VIP devolver un puntero constante para evitar que desde el main() se puede modificar el nombre + Fecha getFecha() const { return fechaAlta; } + + void setNombre(const char *nom); + void setFecha(Fecha f); + + bool operator==(const Cliente& c) const; // if (c1 ===c2) + +}; + +ostream& operator<<(ostream &s, const Cliente &c); //funcion no amiga de la clase + +#endif // CLIENTE_H diff --git a/parte1/include/Fecha.h b/parte1/include/Fecha.h new file mode 100644 index 0000000..2f09f6b --- /dev/null +++ b/parte1/include/Fecha.h @@ -0,0 +1,31 @@ +#ifndef FECHA_H +#define FECHA_H + +#include //cin, cout + +using namespace std; +//SI FALTA ALGUN METODO O FUNCION A袮DIRLO... +class Fecha { + int dia; + int mes, anio; +public: + Fecha(const int &dia, const int &m, const int &anio); +//virtual ~Fecha(); //NO HACE FALTA +//Fecha(const Fecha &f); //NO HACE FALTA: EL QUE GENERA EL COMPILADOR FUNCIONA BIEN YA QUE NO HAY PUNTEROS + int getDia() const { return dia; } + int getMes() const { return this->mes; } + int getAnio() const { return this->anio; } + void setFecha(const int &dia, const int &mes, const int &a); + void ver() const; + bool bisiesto() const; + Fecha operator++(); //++f + Fecha operator++(int i); //f++ + Fecha operator+(const int &i) const; //f+5 + + friend Fecha operator+(const int &i, const Fecha &f); //const por seguridad y & por velocidad + friend ostream& operator<<(ostream& os, const Fecha& f); +}; + +Fecha operator+(const int &i, const Fecha &f); //const por seguridad y & por velocidad + +#endif // FECHA_H diff --git a/parte1/src/Cliente.cpp b/parte1/src/Cliente.cpp new file mode 100644 index 0000000..62f17f0 --- /dev/null +++ b/parte1/src/Cliente.cpp @@ -0,0 +1,58 @@ +#include +#include //strlen, strcpy +#include //std::setprecision +#include //stringstream +#include "Cliente.h" + +//Cliente::Cliente(long int d, char *nom, Fecha f):fechaAlta(f.getDia(), f.getMes(), f.getAnio()) { +Cliente::Cliente(long int d,const char *nom, Fecha f):fechaAlta(f) { //esta cabecera es mas corta (invoco + this->dni=d; //constructor copia de fecha + //en vez de constructor de 3 parametros) + //this->nombre=nombre; //MAL!!!! + this->nombre=new char[strlen(nom)+1]; + strcpy(this->nombre, nom); + + //this->fechaAlta=f;//MAL!!!! los tipos no primitivos debe ir en zona inicializadores +} + +Cliente::~Cliente() { + delete [] this->nombre; //si en el constructor uso new [] en el destructor uso delete [] +} + +Cliente& Cliente::operator=(const Cliente& c) { + if (this != &c) { //si no es x=x + this->dni=c.dni; + delete [] this->nombre; + //this->nombre=c.nombre; //MAL!!!! + this->nombre=new char[strlen(c.nombre)+1]; + strcpy(this->nombre, c.nombre); + this->fechaAlta=c.fechaAlta; + } + return *this; +} + +bool Cliente::operator==(const Cliente& c) const { + if (this->dni!=c.dni) return false; + if (strcmp(this->nombre, c.nombre)!=0) return false; + if (this->fechaAlta.getDia()!=c.fechaAlta.getDia() || + this->fechaAlta.getMes()!=c.fechaAlta.getMes() || + this->fechaAlta.getAnio()!=c.fechaAlta.getAnio()) return false; + return true; +} + +//RESTO DE METODOS Y FUNCIONES A RELLENAR POR EL ALUMNO.. + +void Cliente::setNombre(const char *nom){ + delete[] this->nombre; + this->nombre = new char[strlen(nom)+1]; + strcpy(this->nombre, nom); +} + +ostream& operator<<(ostream& os, const Cliente& c) { + os << c.getDni() << " - " << c.getNombre() << " (" << c.getFecha() << ")"; + return os; +} + +void Cliente::setFecha(Fecha f) { + this->fechaAlta = f; +} diff --git a/parte1/src/Fecha.cpp b/parte1/src/Fecha.cpp new file mode 100644 index 0000000..241108e --- /dev/null +++ b/parte1/src/Fecha.cpp @@ -0,0 +1,99 @@ +#include "Fecha.h" + +Fecha::Fecha(const int &dia, const int &m, const int &anio) { + this->setFecha(dia, m, anio); //el cogido es el mismo que el del metodo setFecha +} + +void Fecha::setFecha(const int &dia, const int &mes, const int &a) { + int dmax, diaMes[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; + this->anio=a; //VIP debo asignar a駉 para que al llamar a bisiesto() tenga el a駉 bien + if (this->bisiesto()) + diaMes[2]=29; + + if (mes<1) //si el mes es incorrecto + this->mes=1; + else if (mes>12) //si el mes es incorrecto + this->mes=12; + else + this->mes=mes; + dmax=diaMes[this->mes]; //una vez fijado el mes veo cuantos dias tiene ese mes como maximo + + if (dia>dmax) //si dia es superior al numero de dias de dicho mes + this->dia=dmax; + else if (dia<1) //si dia es inferior a 1 + this->dia=1; + else + this->dia=dia; +} + +bool Fecha::bisiesto() const { + if (this->anio%4==0 && (this->anio%100!=0 || this->anio%400==0 )) //esto no es exacto... corregidlo ustedes + return true; + else + return false; +} + +void Fecha::ver() const { + if (this->dia < 10) + cout << "0"; + cout << this->dia << "/"; + if (this->mes < 10) + cout << "0"; + cout << this->mes << "/" << this->anio; +} + +Fecha Fecha::operator++() { //++f + int dmax, diaMes[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; + if (this->bisiesto()) //si el a駉 es bisiesto febrero tiene 29 dias + diaMes[2]=29; + dmax=diaMes[this->mes]; + this->dia++; + if (this->dia>dmax) { //si al incrementar dia superamos el numero de dias de dicho mes + this->dia=1; //pasamos a 1 + this->mes++; //del mes siguiente + if (this->mes>12) { //si al incrementar mes pasamos de 12 meses + this->mes=1; //pasamos al mes 1 + this->anio++; //del a駉 siguiente + } + } + return *this; //devolvemos el objeto fecha ya incrementado +} + +//RESTO DE METODOS Y FUNCIONES A RELLENAR POR EL ALUMNO... + + +Fecha Fecha::operator++(int) { //f++ + Fecha temp = *this; + + int dmax, diaMes[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; + if (this->bisiesto()) //si el a駉 es bisiesto febrero tiene 29 dias + diaMes[2]=29; + + dmax=diaMes[this->mes]; + this->dia++; + if (this->dia>dmax) { //si al incrementar dia superamos el numero de dias de dicho mes + this->dia=1; //pasamos a 1 + this->mes++; //del mes siguiente + if (this->mes>12) { //si al incrementar mes pasamos de 12 meses + this->mes=1; //pasamos al mes 1 + this->anio++; //del a駉 siguiente + } + } + + return temp; //devolvemos el objeto antes del incrementado +} + +ostream& operator<<(ostream& os, const Fecha& f) { + os << f.getDia() << "/" << f.getMes() << "/" << f.getAnio(); + return os; +} + + +Fecha Fecha::operator+(const int &dias)const { //f+5 + Fecha resultado = *this; + for(int i = 0; i < dias; i++){ + ++resultado; + } + return *this; +} + diff --git a/parte1/src/main.cpp b/parte1/src/main.cpp new file mode 100644 index 0000000..0668d50 --- /dev/null +++ b/parte1/src/main.cpp @@ -0,0 +1,63 @@ + +#include +#include +#include +#include "Fecha.h" //definicion de la clase Fecha +#include "Cliente.h" // definicion de la clase Cliente + +using namespace std; + +int main() { + Fecha f1(29,2,2001), f3(29,2,2004), f4(29,2,1900); //Fecha f5; //no permitido + + const Fecha f2=f1; //indica que metodo se esta ejecutando aqui + + f1.setFecha(f3.getDia()-3, f3.getMes()-2, 2007); //29-3/2-2/2007 --> f1=26/1/2007 + + cout << "Fechas: "; f1.ver(); cout << ", "; f2.ver(); cout << ", "; + f3.ver(); cout << ", "; f4.ver(); cout << endl; + + if (f3.bisiesto() && !f2.bisiesto() && f4.bisiesto()==false) + cout << f3.getAnio() << " es bisiesto, " << f2.getAnio() << " y " << f4.getAnio() << " no\n"; + + + f4.setFecha(31, 12, 2000); //f4=31/12/2000 + +// cout << "f4: "; f4.ver(); cout << endl; + + f3=f4++; //indica que m茅todo/s se esta ejecutando aqui +// cout << "f3: "; f3.ver(); cout << endl; + ++f4; + +// cout << "f4: "; f4.ver(); cout << endl; + +// f1=2+f2+3; + cout << "Fechas: "; f1.ver(); cout << ", "; f2.ver(); cout << ", "; + f3.ver(); cout << ", "; f4.ver(); cout << endl; + + Cliente *p = new Cliente(75547001, "Susana Diaz", f1); + f1.setFecha(7,10,2015); + + Cliente c(75547999, "Juan Sin Miedo", Fecha(29,2,2000)); + const Cliente j(44228547, "Luis", f1); + c.setNombre("Juan Palomo"); + + if (j==c) + cout << "\nj y c son iguales\n"; + else + cout << "\nj y c no son iguales\n"; + cout << p->getDni() << " - " << c.getNombre() << ": " << j.getFecha() << endl; + cout << *p << "\n" << c << "\n" << j << "\n"; + c = *p; + p->setNombre("Susanita"); p->setFecha(p->getFecha()+10); + cout << "\nDatos de los clientes: \n"; + cout << *p << "\n" << c << "\n" << j << "\n"; + delete p; p = NULL; + + if (std::filesystem::exists("/etc/os-release")){ + system("read -p 'Presione una tecla para continuar' " ); return 0; + }else{ + system("PAUSE"); return 0; + } + +} diff --git a/parte2/Makefile b/parte2/Makefile new file mode 100644 index 0000000..29fb841 --- /dev/null +++ b/parte2/Makefile @@ -0,0 +1,39 @@ +# --- Configuraci贸n general --- +CXX = g++ +CXXFLAGS = -Wall -Wextra -std=c++17 -Iinclude +SRC_DIR = src +OBJ_DIR = obj +BIN_DIR = bin +TARGET = $(BIN_DIR)/programa + +# --- Archivos fuente y objeto --- +SRCS = $(wildcard $(SRC_DIR)/*.cpp) +OBJS = $(SRCS:$(SRC_DIR)/%.cpp=$(OBJ_DIR)/%.o) + +# --- Regla principal --- +all: $(TARGET) + +# --- C贸mo generar el ejecutable --- +$(TARGET): $(OBJS) + @mkdir -p $(BIN_DIR) + $(CXX) $(CXXFLAGS) $(OBJS) -o $(TARGET) + @echo "Compilaci贸n completa. Ejecutable en $(TARGET)" + +# --- C贸mo compilar cada .cpp a .o --- +$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp + @mkdir -p $(OBJ_DIR) + $(CXX) $(CXXFLAGS) -c $< -o $@ + +# --- Limpieza --- +clean: + rm -rf $(OBJ_DIR)/*.o + @echo "Archivos objeto eliminados." + +mrproper: clean + rm -rf $(BIN_DIR)/* + @echo "Ejecutables eliminados." + +# --- Ejecuci贸n r谩pida --- +run: all + ./$(TARGET) +