From efa357f397f19b1d276fed74104f2b5c3222758d Mon Sep 17 00:00:00 2001 From: Pablo Date: Sat, 14 Mar 2026 15:11:19 +0100 Subject: [PATCH] menu practica 1 --- .gitignore | 2 + Practica0/Makefile | 39 +++ Practica0/P0.cbp | 43 +++ Practica0/Practica0.cpp | 502 +++++++++++++++++++++++++++++++++++ Practica0/include/quebrado.h | 2 + Practica0/numeros.dat | Bin 0 -> 680 bytes Practica0/numeros.txt | 86 ++++++ Practica0/src/main.cpp | 14 + Practica1/dgt.o | Bin 0 -> 16424 bytes Practica1/main.cpp | 26 ++ 10 files changed, 714 insertions(+) create mode 100644 .gitignore create mode 100644 Practica0/Makefile create mode 100644 Practica0/P0.cbp create mode 100644 Practica0/Practica0.cpp create mode 100644 Practica0/include/quebrado.h create mode 100644 Practica0/numeros.dat create mode 100644 Practica0/numeros.txt create mode 100644 Practica0/src/main.cpp create mode 100755 Practica1/dgt.o create mode 100644 Practica1/main.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..25a7384 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.o +*.exe diff --git a/Practica0/Makefile b/Practica0/Makefile new file mode 100644 index 0000000..29fb841 --- /dev/null +++ b/Practica0/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) + diff --git a/Practica0/P0.cbp b/Practica0/P0.cbp new file mode 100644 index 0000000..e02c551 --- /dev/null +++ b/Practica0/P0.cbp @@ -0,0 +1,43 @@ + + + + + + diff --git a/Practica0/Practica0.cpp b/Practica0/Practica0.cpp new file mode 100644 index 0000000..a208ac5 --- /dev/null +++ b/Practica0/Practica0.cpp @@ -0,0 +1,502 @@ +#include //cin, cout +#include // getch +#include +#include +#include +#include + +#define MAXIMO 20 +#define M 5 +using namespace std; + + + + + + +class quebrado { + int numerador, denominador; +public: + quebrado() { numerador=0; denominador=1; } + quebrado(int n, int d=1); + int getnumerador() { return numerador; } + int getdenominador() {return denominador; } + void valor(int n, int d=1); + quebrado operator+(quebrado q); + quebrado operator-(quebrado q); + quebrado operator*(quebrado q); + quebrado operator/(quebrado q); + quebrado operator-(); + int operator==(quebrado q); + void mostrar(); +}; + +typedef quebrado tipoelemento ; + +int mcd(int a, int b) { + int comun,encontrado=0; + a=abs(a); + b=abs(b); + if (a>b) comun=b; + else comun=a; + while (comun>1 && !encontrado) + { + if (a%comun==0 && b%comun==0) + encontrado=1; + else comun--; +} + return(comun); +} +//calcula el mcm de a y b (en positivo) +int mcm(int a, int b) { + int comun,encontrado; + if (a<0) a=-a; + if (b<0) b=-b; + if (a>b) comun=a; + else comun=b; + encontrado=0; + while (!encontrado) { + if (comun%a==0 && comun%b==0) + encontrado=1; + else + comun++; + } + return(comun); +} + +quebrado::quebrado(int n, int d) { + if (d==0) cout << "\nError: Quebrado no valido"; + numerador=n; denominador=d; +} + +void quebrado::valor(int n, int d) { + if (d==0) cout << "\nError: Quebrado no valido"; + numerador=n; denominador=d; +} + +void quebrado::mostrar() { + if (denominador>0) cout << numerador << "/" << denominador; + else cout << -numerador << "/" << -denominador; +} + +quebrado quebrado::operator/(quebrado q) { + quebrado division; + division.numerador=numerador*q.denominador; + division.denominador=denominador*q.numerador; + return division; +} +quebrado quebrado::operator-() { + quebrado aux; + aux.numerador=-numerador; + aux.denominador=denominador; + return aux; +} + +int quebrado::operator==(quebrado q) { + int igual; + if (numerador*q.denominador==denominador*q.numerador) + igual=1; + else + igual=0; + return igual; +} + + +quebrado quebrado::operator+(quebrado q) { +quebrado suma; + int comun; + if (denominador==q.denominador) { + suma.numerador= numerador + q.numerador; + suma.denominador = denominador; + } + else { + comun=mcm(denominador,q.denominador); + suma.denominador = comun; + suma.numerador=numerador*comun/denominador + q.numerador*comun/q.denominador; + } + return suma; +} +quebrado quebrado::operator-(quebrado q) { + quebrado resta; + q.numerador=-q.numerador; + resta=(*this)+q; + return(resta); +} +quebrado quebrado::operator*(quebrado q) { + quebrado producto; + producto.numerador=numerador*q.numerador; + producto.denominador=denominador*q.denominador; + return producto; +} + + +class complejo { +double real, imag; +public: + complejo(void) { real = 0.0; imag = 0.0; } + complejo(double re, double im=0.0) { real = re; imag = im;} + complejo(const complejo& r) { real = r.real;imag = r.imag;} + void SetReal(double re) { real = re; } + void SetImag(double im) { imag = im; } + double GetReal(void) {return real; } + double GetImag(void) {return imag; } + complejo operator+(int e); + complejo operator+(complejo c); //por valor + complejo operator-(const complejo& c); //por ref + int operator== (complejo c); + complejo operator=(complejo c); + complejo operator*(complejo c); + complejo operator++(); // ++obj; + complejo operator++(int notused); //obj++ + complejo operator-(); + void mostrar(); +}; + + +complejo complejo::operator+ (int e) { + complejo suma; + suma.real = real + e; suma.imag = imag; + return suma; +} +// sobrecarga de + +complejo complejo::operator+ (complejo c) { + complejo suma; + suma.real = real + c.real; + suma.imag = imag + c.imag; + return suma; +} +// sobrecarga de - +complejo complejo::operator- (const complejo &c) { + complejo resta; + resta.real = real - c.real; + resta.imag = imag - c.imag; + return resta; +} +// sobrecarga de == +int complejo::operator== (complejo c) { + if (real==c.real && imag==c.imag) + return 1; + else + return 0; +} +// sobrecarga de = +complejo complejo::operator= (complejo c) { + real=c.real; imag=c.imag; + return c; +} +// sobrecarga de – unario +complejo complejo::operator-() { +complejo copia; +copia.real=-real; +copia.imag=-imag; +return copia; +} +// sobrecarga de ++ (++obj) +complejo complejo::operator++() { +complejo copia; +real++; +copia.real=real; +copia.imag=imag; +return copia; +} +// sobrecarga de ++ (obj++) +complejo complejo::operator++(int notused){ +complejo copia; +copia.real=real; +copia.imag=imag; +real++; +return copia; +} +//sobrecarga de * +complejo complejo::operator*(complejo c){ +//Falta implementar +complejo copia; + + +return copia; +} +// mostrar complejo +void complejo::mostrar(){ +if (imag>0) + cout<> fila; + cout << "Columnas: "; cin >> col; + } while (fila>M || fila<1 || col>M || col<1); + cout << "Carga de una matriz " << fila << " x " << col << ":\n"; + fin = fopen(cad, "rb"); + if (fin != NULL) { + for (int i=0; i> fila; + cout << "Columnas: "; cin >> col; + } while (fila>M || fila<1 || col>M || col<1); + cout << "Carga de una matriz " << fila << " x " << col << ":\n"; + for (int i=0; i>x>>y; + tipoelemento A(x,y); + celda[i][j]=A; + //A.mostrar(); + } + } +} + +matriz::matriz(int f, int c) { + fila=f; + col=c; + for (int i=0; i"; + fflush(stdin); gets(comando); + if (strcmp(comando,"cargar")==0) { + cout<<"Cuantas matrices quieres cargar? \n"; cin>>n; + if (n+N>=MAXIMO) + cout<<"Se excede el numero de matrices con las que operar\n"; + else + { + N=N+n; + for (i=0;i>pos;//Insertar matriz en la posicion pos + if (pos>=0 && pos<=N){ + N++; + for(i=N-1;i>=pos;i--) + m[i]=m[i-1]; + m[pos].cargar(); + } + else cout<<"La posicion no es valida\n";break; + case 0: cout<<"Posiciones?:";cin>>pos>>pos2;//Sumar matrices en estas posiciones + if (pos>=0 && pos=0 && pos2>pos;//Eliminar matriz en la posicion pos + if (pos>=0 && pos>pos>>pos2;//Restar matrices en estas posiciones + if (pos>=0 && pos=0 && pos2>pos>>pos2;//Multiplicar matrices en estas posiciones + if (pos>=0 && pos=0 && pos2>pos; + if (pos>=0 && pos?U}KYJ&)sfpSVnXu6P-|&37Giep~oD zh!?8Ue60H4X!PWCFfPAlK#{*Q{`b=7YcG1dpQXobhS_@O1g<<^bv|E9$G_C1_&yceCB_|0y= qaA=SJ(*8VpXZ>(k2V@Y<~$KRv|nuJSvqI6fZ$ literal 0 HcmV?d00001 diff --git a/Practica0/numeros.txt b/Practica0/numeros.txt new file mode 100644 index 0000000..bd9213b --- /dev/null +++ b/Practica0/numeros.txt @@ -0,0 +1,86 @@ +85 +6 7 +2 9 +9 1 +-1 5 +1 4 +1 3 +2 3 +2 4 +9 8 +2 -3 +3 8 +1 8 +3 2 +-1 2 +9 2 +2 5 +1 2 +1 -6 +3 4 +9 7 +3 5 +-5 2 +2 3 +8 9 +5 6 +7 9 +2 5 +5 4 +-9 2 +1 2 +1 3 +3 2 +4 2 +-1 3 +1 4 +8 2 +1 5 +3 3 +2 3 +-3 5 +4 3 +9 3 +1 3 +9 3 +1 9 +3 4 +5 8 +9 3 +4 6 +8 3 +2 5 +9 -3 +8 7 +8 3 +6 3 +5 3 +3 5 +4 3 +5 6 +-5 7 +4 3 +4 5 +1 3 +1 3 +-1 2 +9 3 +1 5 +2 3 +-1 5 +2 5 +1 6 +2 -4 +1 4 +2 4 +2 3 +-3 7 +1 4 +5 7 +2 4 +7 4 +2 4 +-3 4 +2 4 +5 6 +3 4 diff --git a/Practica0/src/main.cpp b/Practica0/src/main.cpp new file mode 100644 index 0000000..ebb3cde --- /dev/null +++ b/Practica0/src/main.cpp @@ -0,0 +1,14 @@ +#include +#include //cin, cout +#include // getch +#include +#include +#include +#include + +#define MAXIMO 20 +#define M 5 + +using namespace std; + + diff --git a/Practica1/dgt.o b/Practica1/dgt.o new file mode 100755 index 0000000000000000000000000000000000000000..d4dc5696a9478c564161fc932bda114763bbb6b8 GIT binary patch literal 16424 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 literal 0 HcmV?d00001 diff --git a/Practica1/main.cpp b/Practica1/main.cpp new file mode 100644 index 0000000..212a66f --- /dev/null +++ b/Practica1/main.cpp @@ -0,0 +1,26 @@ +#include +#include +#include +using namespace std; + +int main() +{ + char opcion; + while (opcion!=8) + { + cout<