From fba9c34c547c99d56b4bf2d83caf5c68a638107f Mon Sep 17 00:00:00 2001 From: Mitsuo Tokumori Date: Fri, 20 Oct 2023 07:20:44 -0500 Subject: Add p1 and p2 solution for 2023-2 E1 --- 2023-2/E1/mitsuo/p1/fun.cpp | 151 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 2023-2/E1/mitsuo/p1/fun.cpp (limited to '2023-2/E1/mitsuo/p1/fun.cpp') diff --git a/2023-2/E1/mitsuo/p1/fun.cpp b/2023-2/E1/mitsuo/p1/fun.cpp new file mode 100644 index 0000000..8eaccbe --- /dev/null +++ b/2023-2/E1/mitsuo/p1/fun.cpp @@ -0,0 +1,151 @@ +#include +#include +#include +#include + +#include "fun.hpp" + +#define INCREMENTO 5 + +using namespace std; + +void cargarPedidos(int **&fechaClienteCantidad, char **&codigoDelProducto, const char *nombArch){ + int nd=0, cap=0; + char *cod; + ifstream arch(nombArch,ios::in); + if(not arch.is_open()){ + cout<<"error al abrir "<>dni; + arch.get(); + arch>>cant; + arch.get(); + fecha = leeFecha(arch); + fechaClienteCantidad = new int [3] {}; + fechaClienteCantidad[0] = fecha; + fechaClienteCantidad[1] = dni; + fechaClienteCantidad[2] = cant; + codigoDelProducto = cod; +} + +int leeFecha(istream &arch){ + int dd,mm,aa; + char c; + arch>>dd>>c>>mm>>c>>aa; + return dd+mm*100+aa*10000; +} + +void qSort(int **fechaClienteCantidad, char **codigoDelProducto, int izq, int der){ + int limite; + if (izq>=der) return; + cambiar(fechaClienteCantidad[izq],codigoDelProducto[izq],fechaClienteCantidad[(izq+der)/2],codigoDelProducto[(izq+der)/2]); + limite = izq; + for(int i=izq+1;i<=der;i++){ + if(desorden(fechaClienteCantidad[i], fechaClienteCantidad[izq])){ + limite++; + cambiar(fechaClienteCantidad[i],codigoDelProducto[i],fechaClienteCantidad[limite],codigoDelProducto[limite]); + } + } + cambiar(fechaClienteCantidad[izq],codigoDelProducto[izq],fechaClienteCantidad[limite],codigoDelProducto[limite]); + qSort(fechaClienteCantidad,codigoDelProducto,izq,limite-1); + qSort(fechaClienteCantidad,codigoDelProducto,limite+1,der); +} + +void cambiar(int *&fechaClienteI,char *&codigoDelProductoI,int *&fechaClienteK,char *&codigoDelProductoK){ + int *auxI = fechaClienteI; + char *auxC = codigoDelProductoI; + fechaClienteI = fechaClienteK; + codigoDelProductoI = codigoDelProductoK; + fechaClienteK = auxI; + codigoDelProductoK = auxC; +} + +bool desorden(int *fechaClienteCantidadI, int *fechaClienteCantidadK){ + return fechaClienteCantidadI[0] < fechaClienteCantidadK[0]; +} + +void pruebaDeCargaDePedidos(int **fechaClienteCantidad, char **codigoDelProducto, const char *nombArch){ + ofstream arch(nombArch,ios::out); + if(not arch.is_open()){ + cout<<"error al abrir "<