Skip to content

Commit

Permalink
ultimo push
Browse files Browse the repository at this point in the history
  • Loading branch information
miaitovich committed Nov 16, 2023
1 parent 225200b commit cdd3db1
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 24 deletions.
33 changes: 18 additions & 15 deletions Proyecto/libreria/archivos.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,46 +14,48 @@ eArchivos leerArchivoAsistencias(std::ifstream &archivo, sAsistencias *&asistenc
{
unsigned int id_aux;
unsigned int cant_ins_aux;
sAsistencias*asistencia = new sAsistencias[tam]; //tam tiene que ser minimo 1
sAsistencias*asistencia = new sAsistencias[tam];

while(archivo.good())
while(!archivo.eof())
{
archivo.read((char*)&id_aux,sizeof(unsigned int));
archivo.read((char*)&cant_ins_aux,sizeof(unsigned int));
sInscripcion*inscripcion_aux = new sInscripcion [cant_ins_aux];
sInscripcion*inscripcion_aux= new sInscripcion[cant_ins_aux];
//sInscripcion*inscripcion_aux = new sInscripcion [cant_ins_aux];

for(int i=0; i<cant_ins_aux; i++)
{
//levanto directamente la estructura de inscripcion
archivo.read((char*)&inscripcion_aux[i],sizeof(inscripcion));
}

//ver que esta persona no este en el archivo
bool personaExistente = false; //declaro como que no existe
int i=0;
while(i<tam-1){
if (asistencias[i].idCliente == id_aux){
if(tam>1)
{
while(i<(tam-1))
{
if (asistencia[i].idCliente == id_aux)
{
personaExistente = true;
break;
}
i++;
}
}
//veo que los cupos de las clases se respeten

if (!personaExistente)//si no esta, la copio en mi nuevo array sin los repetidos
{
// La persona no existe en el archivo, por lo que podemos agregarla al array y actualizar el tamaño
resizeAsistencia(asistencia, tam); //agrego memoria a medida que agrego clientes
asistencia[tam-1].idCliente=id_aux;
asistencia[tam-1].cantInscriptos=cant_ins_aux;
asistencia[tam-1].Inscripcion=inscripcion_aux;
resizeAsistencia(asistencia, tam); //agrego memoria a medida que agrego clientes
}
else
{
// La persona ya existe en el archivo, por lo que no la agregamos y liberamos la memoria de inscripcion_aux
} else // La persona ya existe en el archivo, por lo que no la agregamos y liberamos la memoria de inscripcion_aux
delete[] inscripcion_aux;
}
}

delete[] asistencia; // Liberar la memoria original
asistencias=asistencia; //copia la lista sin repetidos
return eArchivos::ExitoOperacion;
Expand Down Expand Up @@ -176,16 +178,17 @@ void resizeAsistencia (sAsistencias *& asistencia, unsigned int &tam)
if(asistencia==nullptr)
{
if(tam<=0)
asistencia= new sAsistencias[++tam];
asistencia = new sAsistencias[++tam];
return;
}
sAsistencias*aux=new sAsistencias[++tam];
sAsistencias*aux=new sAsistencias[tam+1];
for(unsigned int i=0; i< tam-1; i++)
{
aux[i]= asistencia[i];
}
delete[]asistencia;
asistencia=aux; //sAsistencias apunta al nuevo array
tam++;
}

void resizeClientes (sClientes *& clientes, unsigned int &tamC)
Expand All @@ -194,7 +197,7 @@ void resizeClientes (sClientes *& clientes, unsigned int &tamC)
{
if(tamC<=0)
{
clientes= new cliente[++tamC]; //si no tenia espacio --> le agrego espacio directamente a clientes
clientes= new sClientes[++tamC]; //si no tenia espacio --> le agrego espacio directamente a clientes
}
return;
}
Expand Down
2 changes: 1 addition & 1 deletion Proyecto/libreria/archivos.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ eArchivos escribirArchivoMañana(std::ofstream&archivo,sAsistencias*cliente_mañ
void resizeClases(sClases*&clases, unsigned int &tamanio);
void resizeAsistencia (sAsistencias *& asistencia, unsigned int &tam);
void resizeClientes (sClientes *& clientes, unsigned int &tamC);
void resizeClienteMañana(sAsistencias*&asistencia_mañana, unsigned int&tamm);
void resizeClienteMañana(sAsistencias *& asistencia_mañana, unsigned int&tamm);

#endif // ARCHIVOS_H
17 changes: 17 additions & 0 deletions Proyecto/libreria/clases.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,4 +177,21 @@ void clienteRandom (sClientes*clientes, sClases*clases, string &nombrecito, stri
return;
}

void ResizeInscripciones(sInscripcion*&inscripciones,int &num_clases)
{
if(inscripciones==nullptr)
{
if(num_clases<0)
{
inscripciones=new sInscripcion[++num_clases];
}
}
sInscripcion*aux=new sInscripcion[++num_clases];
for(unsigned int i=0;i<num_clases-1;i++)
{
aux[i]=inscripciones[i];
}
delete[]inscripciones;
inscripciones=aux;
}

2 changes: 1 addition & 1 deletion Proyecto/libreria/clasess.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,6 @@ int buscar_idclases(sClases *clases, unsigned int tamT, string actividad, float
void AgruparPorHorarios(sClases*clases, int tamT, int*&grupitos, unsigned int &n, float horario);
void ResizeGrupitos(int *& grupitos, unsigned int &N);
void clienteRandom (sClientes*clientes, sClases* clase, string &nombrecito, string &apellidito, string &actividadd, float &horarioo);

void ResizeInscripciones(sInscripcion*&inscripciones,int &num_clases);

#endif // CLASESS_H
2 changes: 0 additions & 2 deletions Proyecto/libreria/cliente.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@ struct asistencia
};
typedef struct asistencia sAsistencias;

const sInscripcion InscripcionNula = { 0 , 0 };

int buscar_idcliente (sClientes *cliente,unsigned int tamT, string nombre, string apellido);

#endif // CLIENTE_H
8 changes: 3 additions & 5 deletions Proyecto/main/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,10 @@ int main()
{
while(j<i) //recorro la cantidad de asistencias que tengo por ahora
{
if(asistenciasMañana[j].idCliente== idclienteR)
if(asistenciasMañana[j].idCliente== idclienteR) // el cliente y tiene alguna inscripcion
{
//resize de las inscripciones del cliente para sumarle un lugar y poder agregarle la clase
//crearme un vector dinamico de tipo inscripcion con 0 lugares
int cantidad= (asistenciasMañana[j].cantInscriptos)++;
//asistenciasMañana[j].cantInscriptos= cantidad;
ResizeInscripciones(asistenciasMañana[j].Inscripcion , asistenciasMañana[j].cantInscriptos);
asistenciasMañana[j].Inscripcion[cantidad] = {idclaseR, time(NULL)};
}
else
Expand All @@ -77,7 +75,7 @@ int main()
}

ofstream archivoMañana;
archivoMañana.open("AsistenciasMañana.bin",ios::binary);
archivoMañana.open("AsistenciaMañana.dat",ios::binary);
int result4 = escribirArchivoMañana(archivoMañana,asistenciasMañana,CantidadClientesHoy);
if(result4<0)
cout<<"No se pudo escribir el archivo de mañana";
Expand Down
4 changes: 4 additions & 0 deletions Proyecto/testing/tst_proyecto.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,4 +93,8 @@ TEST_CASE("Archivos")

delete[]clases;
}
SECTION("LeerArchivoAyer")
{

}
}

0 comments on commit cdd3db1

Please sign in to comment.