Skip to content

Commit

Permalink
4/12
Browse files Browse the repository at this point in the history
  • Loading branch information
Llucatiel committed Dec 4, 2023
1 parent 488772e commit cfa4d3d
Show file tree
Hide file tree
Showing 6 changed files with 135 additions and 110 deletions.
73 changes: 46 additions & 27 deletions Proyecto/libreria/archivos.cpp
Original file line number Diff line number Diff line change
@@ -1,63 +1,81 @@
#include "archivos.h"

int resizec(Clase *&clases, int tam){
int resizec(Clase **clases, int tam){

clases = new Clase[tam];
Clase *nueva = new Clase[tam+1]; //Creamos nueva estructura con la cantidad deseada

for (int i = 0; i <tam; i++) //Cargamos la estructura nueva
nueva[i] = clases[i];
nueva[i] = *clases[i];


delete []clases; //Borramos la vieja
delete []*clases; //Borramos la vieja

clases = nueva; // Apuntamos la estructura hacia la posicion de la nueva, con el tamaño deseado
*clases = nueva; // Apuntamos la estructura hacia la posicion de la nueva, con el tamaño deseado
//nueva queda en la ram hasta el infinito?

return tam+1;
}
int resizeu(Usuario *&cliente, int tam){
//Revisar resize de Clase, es igual pero con Usuario
cliente = new Usuario[tam];
int resizeu(Usuario **usu, int tam){

Usuario *nueva = new Usuario[tam+1];

for (int i = 0; i <tam; i++){
nueva[i] = cliente[i];
nueva[i] = *usu[i];
}

delete []cliente;
delete []*usu;

cliente = nueva;
*usu = nueva;

return tam+1;
}
int resizea(Asistencia *& cliente, int tam){
//Revisar resize de Clase, es igual pero con Usuario
cliente = new Asistencia[tam];
int resizea(Asistencia ** asist, int tam){

Asistencia *nueva = new Asistencia[tam+1];

for (int i = 0; i <tam; i++){
nueva[i] = cliente[i];
nueva[i] = *asist[i];
}
delete []cliente;
cliente = nueva;
delete []*asist;
*asist = nueva;
return tam+1;
}
int resizei(Inscripcion *& cliente, int tam){
//Revisar resize de Clase, es igual pero con Usuario
cliente = new Inscripcion[tam];
int resizei(Inscripcion **ins, int tam){

Inscripcion *nueva = new Inscripcion[tam+1];

for (int i = 0; i <tam; i++){
nueva[i] = cliente[i];
nueva[i] = *ins[i];

}
delete []cliente;
cliente = nueva;
delete[] *ins;
*ins = nueva;
return tam+1;
}

int reduI(Inscripcion ** ins, int tam){

if (tam==2){
Inscripcion *aux = new Inscripcion [1];
aux[0] = *ins[0];

delete[] *ins;
*ins = aux;
return tam-1;
}

Inscripcion *nueva = new Inscripcion[tam-1];

for (int i = 0; i <tam; i++){
nueva[i] = *ins[i];
}
delete[] *ins;
*ins = nueva;
return tam-1;
}

code control(Asistencia &asist, Clase *clase){

code control(Asistencia &asist, Clase *&clase){
code controlador = EXITO;

for (unsigned int i =0; i<asist.cantClases; i++){
Expand Down Expand Up @@ -153,15 +171,15 @@ code leerAsistencia(ifstream& arch, Asistencia *&asist, unsigned int &CantAsiste
while (!arch.eof()) {
arch.read((char*)(&asist[i].idCliente), sizeof(unsigned int));
arch.read((char*)(&asist[i].cantClases), sizeof(unsigned int));
resizea(asist, i); //HACER UN RESIZE PARA ASISTENCIA
resizea(&asist, i); //HACER UN RESIZE PARA ASISTENCIA
CantAsistencia++;

for (unsigned int j = 0; j < asist[i].cantClases; j++) {
arch.read((char*)(&asist[i].clases[j].idCurso), sizeof(unsigned int));
arch.read((char*)(&asist[i].clases[j].fechaInscripcion), sizeof(time_t));

// Verificar si es necesario incrementar el tamaño del arreglo de Inscripcion
resizei(asist[i].clases, j); //IDEM ARRIBA
resizei(&asist[i].clases, j); //IDEM ARRIBA
}
i++;
}
Expand All @@ -174,7 +192,7 @@ void errores(code codigo){
ifstream arch;
string line;
int i=-1;
arch.open("../../Proyecto/Datatset_TP/codigosErrores.txt");
arch.open("../../Proyecto/Dataset_TP/codigosErrores.txt");

if (arch.is_open()){
do{
Expand All @@ -186,5 +204,6 @@ void errores(code codigo){
}
else
cout<< "Error al abrir" << endl;
arch.close();
return;
}
10 changes: 6 additions & 4 deletions Proyecto/libreria/archivos.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@ code control(Asistencia *&asist, Clase *clases);
code lecturaClases(ifstream &arch, Clase *& clases, unsigned int &tam);
code lecturaClientes(ifstream &arch, Usuario *& cliente , unsigned int &cantCliente);
code leerAsistencia(ifstream& arch, Asistencia *&asist, unsigned int CantAsistencia);
int resizec(Clase *&clases, int tam);
int resizeu(Usuario *&cliente, int tam);
int resizea(Asistencia *& cliente, int tam);
int resizei(Inscripcion *& cliente, int tam);

int resizec(Clase **clases, int tam);
int resizeu(Usuario **usu, int tam);
int resizea(Asistencia ** asist, int tam);
int resizei(Inscripcion **ins, int tam);
int reduI(Inscripcion ** ins, int tam);

void errores(code codigo);

Expand Down
29 changes: 23 additions & 6 deletions Proyecto/libreria/clases.cpp
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
#include "global.h"
#include "clases.h"
#include "usuario.h"
#include "archivos.h"



bool espacio(Clase clase, unsigned int h){
if (h==7)
return false;
return (ocupado[h] - clase.cupoActual > 0);
}

code anotarClase (Clase *&clase, Asistencia &asist, unsigned int idClase){
code anotarClase (Clase *clase, Asistencia &asist, unsigned int idClase){
if (idClase>60)
return::REFERENCIA_ERRONEA;
if (clase[idClase-1].id == idClase){
Expand All @@ -24,29 +26,44 @@ code anotarClase (Clase *&clase, Asistencia &asist, unsigned int idClase){
}

clase[idClase-1].cupoActual++;
asist.cantClases++;
asist.cantClases = (unsigned int)resizei (&asist.clases, asist.cantClases);

asist.clases[asist.cantClases -1].idCurso = idClase;
asist.clases[asist.cantClases -1].fechaInscripcion = time_t(0);
asist.clases[asist.cantClases -1].fechaInscripcion = time(nullptr);
return::EXITO;
}
return::REFERENCIA_ERRONEA;
}

code bajarClase (Clase *&clase, Asistencia &asist, unsigned int idClase){
code bajarClase (Clase *clase, Asistencia &asist, unsigned int idClase){
if (idClase>60)
return::REFERENCIA_ERRONEA;

if (clase[idClase-1].id == idClase){

for (unsigned int i=0; i<asist.cantClases; i++){

if(asist.clases[i].idCurso == idClase){
if (asist.cantClases==1){
asist.clases[i].idCurso = -1;
asist.clases[i].fechaInscripcion=-1;

asist.cantClases=0;
} else {

for (unsigned int j=i; j<asist.cantClases-1; j++){
asist.clases[j].idCurso= asist.clases[j+1].idCurso;
asist.clases[j].fechaInscripcion= asist.clases[j+1].fechaInscripcion;
}//Luego de bajar la posición en uno de todos para luego reducir el tamaño de asist.clases

asist.cantClases = (unsigned int)reduI (&asist.clases, asist.cantClases);
}

clase[idClase-1].cupoActual--;
return::EXITO;
}
return::HORARIO_LIBRE;
}
return::HORARIO_LIBRE;
}
return::REFERENCIA_ERRONEA;
}
Expand Down
5 changes: 3 additions & 2 deletions Proyecto/libreria/clases.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@




const string clases[6] = {"spinning", "yoga", "pilates", "stretching", "zumba", "boxeo"};
const int ocupado [6]={45, 25, 15, 40, 50, 30};

Expand All @@ -19,8 +20,8 @@ struct sclases {
typedef enum eCode code;


code anotarClase (Clase *&clases, Asistencia &asist, unsigned int idClase);
code bajarClase (Clase *&clases, Asistencia &asist, unsigned int idClase);
code anotarClase (Clase *clases, Asistencia &asist, unsigned int idClase);
code bajarClase (Clase *clases, Asistencia &asist, unsigned int idClase);
int BuscarIdClases(Clase *clases, int horario, str nombre);
bool espacio(Clase clase, unsigned int h);
unsigned int cupoactual(Clase *& clases, unsigned int idclase, unsigned int cantAsistencias);
Expand Down
45 changes: 42 additions & 3 deletions Proyecto/main/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ int main() {
//abro archivos
ifstream arch;
arch.open("../../Proyecto/Datatset_TP/iriClasesGYM.csv",ios::in);
arch.open("../../Proyecto/Dataset_TP/iriClasesGYM.csv",ios::in);
error = lecturaClases(arch,clases,tam);
arch.close();
arch.open("../../Proyecto/Datatset_TP/iriClientesGYM.csv",ios::in);
arch.open("../../Proyecto/Dataset_TP/iriClientesGYM.csv",ios::in);
error = lecturaClientes(arch,cliente,cantCliente);
arch.close();
arch.open("../../Proyecto/Datatset_TP/asistencias_1697673600000.dat",ios::binary);
arch.open("../../Proyecto/Dataset_TP/asistencias_1697673600000.dat",ios::binary);
error = leerAsistencia(arch, asist, cantAsist);
arch.close();
Expand Down Expand Up @@ -131,4 +131,43 @@ int main() {
//eliminar el de inscripciones
return 0;
*/

Clase cl[2] = {
{1, "spinning", 8, 0},
{2, "spinning", 9, 0}
};

Clase *clase = new Clase[2];

clase = cl;

Asistencia asist;
asist.idCliente =0;
asist.cantClases=0;

code error = anotarClase(clase, asist, 1);
cout << asist.cantClases << "\t" << asist.clases[0].idCurso << endl;
errores(error);
cout << endl << endl;

error = bajarClase(clase, asist, 1);
cout << asist.cantClases << "\t" << asist.clases[0].idCurso << "\t" << asist.clases[1].idCurso <<endl;
errores(error);
cout << endl << endl;

error = anotarClase (clase, asist, 2);
cout << asist.cantClases <<"\t"<< asist.clases[0].idCurso << "\t" << asist.clases[1].idCurso << endl;
errores(error);
cout << endl << endl;




error = anotarClase (clase, asist, 2);
cout << asist.cantClases <<"\t"<< asist.clases[0].idCurso << "\t" << asist.clases[1].idCurso << endl;
errores(error);
cout << endl << endl;


return 0;
}
Loading

0 comments on commit cfa4d3d

Please sign in to comment.