const Barquitos & Barquitos::operator = (const Barquitos &otro){ if(this != &otro){ liberarMemoria() ; reservarMemoria(otro.nfil, otro.ncol) ; copiarDatos(otro) ; } return *this ; }
int main() { Hospital *h = crearHospital(); ingresarPaciente(h); ingresarPaciente(h); ingresarPaciente(h); imprimirHospital(h); darAlta(h,1); liberarMemoria(h); return 0; }
bool Barquitos::Leer(const char *nombre){ ifstream input ; string magica ; int filas, columnas ; int valor ; input.open(nombre, ios::in | ios::binary) ; if(!input){ cerr << "\nError en la apertura de " << nombre ; return false ; } input >> magica ; if(magica.compare("MP-BARQ-V1.0") != 0){ cerr << "\nIdentificador incorrecto." << endl ; return false ; } else{ input >> filas >> columnas ; input.ignore(1) ; liberarMemoria() ; reservarMemoria(filas,columnas) ; nfil = filas ; ncol = columnas ; for(int i = 0 ; i < nfil ; i++) for(int j = 0 ; j < ncol ; j++){ input.read((char*) (&valor), sizeof (int)); datos[i][j] = valor ; } } input.close() ; return true ; }
int main(int argc, char** argv) { if(argc != 2){ puts("No se ingreso la ruta del archivo de configuracion\n"); return 0; } thread_socket= 3030; paginaEncontrada=TRUE; umclog=malloc(sizeof(t_log)); memcpy(umclog,log_create("umc.log", "UMC", TRUE, LOG_LEVEL_TRACE), sizeof(t_log)); leerArchivoDeConfiguracion(argv[1]); crearLogger(0); log_info(umclog, "Inicio UMC."); pthread_t hiloComandos; pthread_attr_t attrhiloComandos; memoriaReal = reservarMemoria(marcos, marco_Size); //Fabrico mi memoria real iniciarEstructurasUMC(); socketSwap=socketCreateClient(); socketConnect(socketSwap,ip_Swap,atoi(puerto_Swap)); menuUMC(hiloComandos, attrhiloComandos); manageSocketConnections(); liberarMemoria(memoriaReal); //Una vez terminado, libero toda mi memoria real log_destroy(logger); return EXIT_SUCCESS; }
Barquitos::~Barquitos(){ liberarMemoria() ; }
int main(int argc, char** argv) { manejarArgumentosEntrada(argc, argv); matriz m_a; matriz m_b; int i,j; char dato; FILE * fp = stdin; /* se cargan los datos para las 2 matrices desde el archivo*/ while(!feof(fp)) { m_a.cantFil = 0; m_a.cantCol = 0; m_b.cantFil = 0; m_b.cantCol = 0; /*Se leen los valores desde el archivo de fila columna y separador de ambos*/ if (fscanf(fp, "%dx%d" , &m_a.cantFil, &m_a.cantCol) == 0) { fprintf(stderr, "ERROR: AL LEER LA FILA O LA COLUMNA DE A\n"); exit(1); } /* Handlers de archivos mal ingresados */ if (m_a.cantFil<0){ fprintf(stderr, "ERROR: FILA INGRESADA INVALIDA PARA MATRIZ A\n"); exit(1); } if (m_a.cantCol<0){ fprintf(stderr, "ERROR: COLUMNA INGRESADA INVALIDA PARA MATRIZ A\n"); exit(1); } if (m_a.cantFil==0 || m_a.cantCol == 0){ fprintf(stderr, "ERROR: MATRIZ A NO INGRESADA O ESPACIO DE MAS EN EL ARCHIVO\n" ); exit(1); } /* se aloja memoria para la matriz a */ m_a.datos = mallocMatrizDouble(m_a.cantFil, m_a.cantCol); if (m_a.datos == NULL) { fprintf(stderr, "ERROR:MEMORIA INSUFICIENTE PARA MATRIZ A\n"); exit(1); } for(i=0;i<m_a.cantFil;i++) { for(j=0;j<m_a.cantCol;j++) { int indice = (i*m_a.cantCol) + j; if ( (dato = fgetc(fp)) == '\n'){ fprintf(stderr, "ERROR: FALTAN ELEMENTOS EN MATRIZ A\n" ); liberarMemoria(&m_a); exit(1); } if (fscanf(fp, "%lf", &m_a.datos[indice]) == 0) { fprintf(stderr, "ERROR: ELEMENTO INCORRECTO EN LA MATRIZ A\n"); liberarMemoria(&m_a); exit(1); } } } if (fscanf(fp, "%dx%d" , &m_b.cantFil, &m_b.cantCol) == 0) { fprintf(stderr, "ERROR: AL LEER LA FILA O LA COLUMNA DE B\n"); liberarMemoria(&m_a); exit(1); } if (m_b.cantFil<0) { fprintf(stderr, "ERROR: FILA INGRESADA INVALIDA PARA MATRIZ B\n"); liberarMemoria(&m_a); exit(1); } if (m_b.cantCol<0) { fprintf(stderr, "ERROR: COLUMNA INGRESADA INVALIDA PARA MATRIZ B\n"); liberarMemoria(&m_a); exit(1); } if (m_b.cantFil==0 || m_b.cantCol == 0){ fprintf(stderr, "ERROR: MATRIZ B NO INGRESADA \n" ); liberarMemoria(&m_a); exit(1); } /* se aloja memoria para la matriz b */ m_b.datos = mallocMatrizDouble(m_b.cantFil, m_b.cantCol); if (m_b.datos==NULL) { fprintf(stderr, "ERROR:MEMORIA INSUFICIENTE PARA MATRIZ B\n"); liberarMemoria(&m_a); exit(1); } for(i=0;i<m_b.cantFil;i++) { for(j=0;j<m_b.cantCol;j++) { int indice = (i*m_b.cantCol) + j; if( (dato = fgetc(fp)) == '\n'){ fprintf(stderr, "ERROR: FALTAN ELEMENTOS EN MATRIZ B\n" ); liberarMemoria(&m_a); liberarMemoria(&m_b); exit(1); } if (fscanf(fp, "%lf", &m_b.datos[indice]) == 0) { fprintf(stderr, "ERROR: ELEMENTO INCORRECTO EN LA MATRIZ B\n"); liberarMemoria(&m_a); liberarMemoria(&m_b); exit(1); } } } if (m_a.cantCol != m_b.cantFil) { fprintf(stderr, "ERROR:NO SE PUEDEN MULTIPLICAR LAS MATRICES DEBIDO A SUS DIMENSIONES\n"); liberarMemoria(&m_a); liberarMemoria(&m_b); exit(1); } else { if (multiplicarMatrices(&m_a, &m_b) != 0) { fprintf(stderr, "ERROR:MEMORIA INSUFICIENTE PARA MATRIZ A\n"); liberarMemoria(&m_a); liberarMemoria(&m_b); exit(1); } } liberarMemoria(&m_a); liberarMemoria(&m_b); } return 0; }
int main(int argc, char **argv) { int opcion = -1; int c_embar = 0; struct embarcacion * embarcaciones = NULL; while(opcion != 0) { printf("Menu:\n1. Agregar Embarcacion\n2. Agregar Persona\n3. Listar embarcaciones\n"); printf("4. Listar personas de una embarcacion\n0. Salir\n"); scanf("%d", &opcion); switch(opcion) { case 1: { crearEmbarcacion(&embarcaciones, &c_embar); printf("Nombre de la embarcacion: "); scanf("\n%[^\n]", (embarcaciones+c_embar-1)->nombre); printf("Eslora: "); scanf("%f", (embarcaciones+c_embar-1)->eslora); printf("Manga: "); scanf("%f", (embarcaciones+c_embar-1)->manga); printf("Ocupantes maximos: "); scanf("%d", (embarcaciones+c_embar-1)->max); printf("Nombre del dueno: "); scanf("\n%[^\n]", (embarcaciones+c_embar-1)->propietario->nombre); printf("Apellidos del dueno: "); scanf("\n%[^\n]", (embarcaciones+c_embar-1)->propietario->apellidos); printf("Edad del dueno: "); scanf("%d", (embarcaciones+c_embar-1)->propietario->edad); *((embarcaciones+c_embar-1)->ocupados) = 0; break; } case 2: { if(c_embar == 0) { printf("No hay embarcaciones en el puerto.\n"); } else { int num; printf("Numero de embarcacion al que se le va a crear el tripulante: "); scanf("%d", &num); if(num >= c_embar) { printf("No existe esa embarcacion.\n"); } else { struct embarcacion * e = (embarcaciones+num); int oc = *(e->ocupados); if(oc >= *(e->max)) { printf("Ya no hay lugares disponibles.\n"); } else { crearPersona(&(e->tripulantes), &oc); printf("Nombre del tripulante: "); scanf("\n%[^\n]", ((e->tripulantes)+oc)->nombre); printf("Apellidos del tripulante: "); scanf("\n%[^\n]", ((e->tripulantes)+oc)->apellidos); printf("Rol del tripulante: "); scanf("\n%[^\n]", ((e->tripulantes)+oc)->rol); printf("Edad del tripulante: "); scanf("%d", ((e->tripulantes)+oc)->edad); ++(*(e->ocupados)); } } } break; } case 3: { printf("Hay %d embarcaciones.\n\n", c_embar); int i; for(i = 0; i < c_embar; ++i) { printf("Embarcacion %d:\n", i); printf("Nombre: %s\n", (embarcaciones+i)->nombre); printf("Manga: %f\n", *(embarcaciones+i)->manga); printf("Eslora: %f\n", *(embarcaciones+i)->eslora); printf("Ocupantes Maximos: %d\n", *(embarcaciones+i)->max); printf("Cantidad de tripulantes: %d\n", *(embarcaciones+i)->ocupados); printf("Lugares disponibles: %d\n", *(embarcaciones+i)->max-(*(embarcaciones+i)->ocupados)); printf("Nombre del dueno: %s\n", (embarcaciones+i)->propietario->nombre); printf("Apellidos del dueno: %s\n", (embarcaciones+i)->propietario->apellidos); printf("Edad del dueno: %d\n\n", *(embarcaciones+i)->propietario->edad); } break; } case 4: { if(c_embar == 0) { printf("No hay embarcaciones.\n"); } else { int num; printf("Ingrese el numero de embarcacion para cual desea conocer los tripulantes: "); scanf("%d", &num); if(num >= c_embar) { printf("No existe la embarcacion numero %d.\n", num); } else { struct persona * man = (embarcaciones+num)->tripulantes; int cant = *((embarcaciones+num)->ocupados); printf("Hay %d tripulantes en la embarcacion %d:\n", cant, num); int i; for(i = 0; i < cant; ++i) { printf("Tripulante %d:\n", i); printf("Nombre: %s\n", (man+i)->nombre); printf("Apellidos: %s\n", (man+i)->apellidos); printf("Edad: %d\n", *(man+i)->edad); printf("Rol: %s\n\n", (man+i)->rol); } } } break; } case 0: { if(c_embar > 0) { liberarMemoria(embarcaciones, &c_embar); } } } } return 0; }