Пример #1
0
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;
}
Пример #3
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;

}
Пример #5
0
Barquitos::~Barquitos(){
    liberarMemoria() ;
}
Пример #6
0
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;
}
Пример #7
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;
}