Closed WaluiguiVevo closed 1 week ago
Dejo este codigo que no estoy pudiendo correr por las lineas que tienen comentarios (son errores que no el entiendo el porque). Si me podrian corregir el codigo y decirme donde me equivoco seria una gran ayuda. Desde ya muchas gracias
#include <stdio.h> #include <stdlib.h> #include <strings.h> typedef struct counterCDT { coso *Counters; size_t maxcounter; } lcounters; typedef struct counter { size_t numpasa; pasajeros *lpasa; //iterador (nose por que lo llame asi) pasajeros *final; pasajeros *inicio; } coso; typedef struct counter { char *pasajeros; pasajeros *tail; } pasajeros; lcounters newCounters(size_t maxCounters) { lcounters *new = malloc(sizeof(lcounters)); // tira error si no pongo puntero new->Counters = calloc(maxCounters, sizeof(coso)); new->maxcounter = maxCounters; return new; // se que los tipos no coinciden } void enterCounter(lcounters counters, size_t counterNumber, const char *passenger) { if (counters.maxcounter <= counterNumber) { return; } pasajeros *nuevo = malloc(sizeof(pasajeros)); // tira error si no pongo puntero nuevo->pasajeros = passenger; nuevo->tail = NULL; if (counters.Counters[counterNumber].inicio == NULL) { counters.Counters[counterNumber].inicio = nuevo; } counters.Counters[counterNumber].final = nuevo; counters.Counters[counterNumber].numpasa++; return; } void toBeginByCounter(lcounters counters, size_t counterNumber) { if (counters.maxcounter <= counterNumber) { return; } counters.Counters[counterNumber]->lpasa = counters.Counters[counterNumber]->inicio; return; } struct checkInResult { size_t counterNumber; const char *checkedInPassenger; size_t waitingPassengers; }; struct checkInResult *checkInCounters(lcounters counters, size_t *checkInResultDim) { struct checkInResult *new = calloc(counters.maxcounter, sizeof(struct checkInResult)); int j = 0; for (int i = 0; i < counters.maxcounter; i++) { if (counters.Counters[i].numpasa != 0) { new[j].counterNumber = i + 1; // El counter 0 no existe new[j].waitingPassengers = counters.Counters[i].numpasa - 1; new[j].checkedInPassenger = counters.Counters[i].inicio; borrapasajero(&counters.Counters[i]); j++; } } checkInResultDim = j; return new; } void borrapasajero(coso *l) { if (l->numpasa == 1) { free(l->inicio->pasajeros); free(l); } else { coso *aux= malloc(sizeof(coso)); aux->inicio->pasajeros=l->inicio->tail; free(l->inicio->pasajeros); l->inicio->pasajeros=aux->inicio; free(aux); l->numpasa--; } return; }
Como que tendría que volver a explicarte la clase de heap y la de structs, y por acá no da. No es para eso.
Dejo este codigo que no estoy pudiendo correr por las lineas que tienen comentarios (son errores que no el entiendo el porque). Si me podrian corregir el codigo y decirme donde me equivoco seria una gran ayuda. Desde ya muchas gracias