Пример #1
0
void pruebas_heap_alumno(){

	heap_t* heap = heap_crear(func_comp);	
	print_test("El heap esta vacio", heap_esta_vacio(heap));
	print_test("Ver max del heap es NULL", heap_ver_max(heap) == NULL);
	int a = 5, b = 6, c = 8, d = 7, e = 10;
	print_test("Encolo el primer elemento (a)",heap_encolar(heap, &a));
	print_test("El maximo del heap es a ",heap_ver_max(heap) == &a);
	print_test("Encolo el segundo elemento (b)", heap_encolar(heap,&b));
	print_test("El maximo del heap es el segundo elemento (b): ", heap_ver_max(heap) == &b);
	
	print_test("La cantidad del heap es 2", heap_cantidad(heap) == 2);
	print_test("Encolo el tercer elemento (c): ", heap_encolar(heap,&c));
	
	print_test("El maximo del heap es el tercer elemento (c)", heap_ver_max(heap) == &c);
	print_test("Encolo el cuarto elemento (d) ", heap_encolar(heap,&d));
	
	print_test("El maximo del heap sigue siendo el tercer elemento (c)", heap_ver_max(heap) == &c);
	print_test("La cantidad del heap es 4", heap_cantidad(heap) == 4);
	print_test("Encolo el quinto elemento (e) ", heap_encolar(heap, &e));
	print_test("El maximo del heap es el quinto elemento", heap_ver_max(heap) == &e);
	print_test("Desencolo", heap_desencolar(heap) == &e);
	print_test("Desencolo", heap_desencolar(heap) == &c);
	print_test("Desencolo", heap_desencolar(heap) == &d);
	print_test("Desencolo", heap_desencolar(heap) == &b);
	print_test("Desencolo", heap_desencolar(heap) == &a);
	print_test("El heap esta vacio", heap_esta_vacio(heap));

	//pruebas_heapify();
	//pruebas_heapsort();
	//pruebas_heap_crear_arr();
	heap_destruir(heap,NULL);
}
int listar_fabricas(base_t* base,bool imprimir){
    int hora,minutos;
    fabrica_t* fabrica;
    fabrica_t* anterior;
    if (lista_esta_vacia(base->fabricasavisitar)){
        //creo una lista con las fabricas que voy a visitar
        anterior = heap_desencolar(base->cerradofabricas);
        lista_insertar_ultimo(base->fabricasavisitar,(void*)anterior);
        while (!heap_esta_vacio(base->cerradofabricas)){
            fabrica = heap_desencolar(base->cerradofabricas);
            if (fabrica->horarioentrada>=anterior->horariosalida){
                lista_insertar_ultimo(base->fabricasavisitar,(void*)fabrica);
                anterior = fabrica;
            }
        }
    }
    if (imprimir){
        printf("Cantidad: %zu\n",lista_largo(base->fabricasavisitar));
        lista_iter_t* iterador = lista_iter_crear(base->fabricasavisitar);
        while(!lista_iter_al_final(iterador)){
            fabrica = lista_iter_ver_actual(iterador);
            conversion_horario(&hora,&minutos,fabrica->horarioentrada);
            printf("%s,%02d:%02d,",fabrica->idfabrica,hora,minutos);
            conversion_horario(&hora,&minutos,fabrica->horariosalida);
            printf("%02d:%02d\n",hora,minutos);
            lista_iter_avanzar(iterador);
        }
        lista_iter_destruir(iterador);
    }
    return 0;
}
Пример #3
0
void pruebas_volumen(void){
    printf("PRUEBAS DE VOLUMEN:\n");
    heap_t* heap=heap_crear(int_cmp);
    int elementos[1000][1];
    bool ok=true;
    for(int i=0;i<1000;i++){
        *elementos[i]=i;
        if(!(ok=heap_encolar(heap,elementos[i]))){
            break;
        }
    }
    print_test("Se encolaron todos los elementos..",ok);
    print_test("Longitud correcta...",heap_cantidad(heap)==1000);
    print_test("Ver max correcto...",heap_ver_max(heap)==elementos[999]);
    for(int i=999;i>=0;i--){
        int* elemento=heap_desencolar(heap);
        if(!(ok=(*elemento==i))){
            break;
        }
    }
    print_test("Los elementos se desencolaron en orden...",ok)
    print_test("Longitud correcta...",heap_cantidad(heap)==0);
    print_test("Ver max correcto...",heap_ver_max(heap)==NULL);
    heap_destruir(heap,NULL);
}
Пример #4
0
void pruebas_heap_vacio(void){
    heap_t* heap=heap_crear(int_cmp);
    print_test("Heap vacío...",heap_cantidad(heap)==0);
    print_test("Ver max es NULL...",heap_ver_max(heap)==NULL);
    print_test("Desencolar es NULL...",heap_desencolar(heap)==NULL);
    heap_destruir(heap,NULL);
}
Пример #5
0
void pruebas_enteros(void){
    heap_t* heap=heap_crear(int_cmp);
    printf("ELEMENTOS ORDENADOS:\n");
    int elementos[10]={0,1,2,3,4,5,6,7,8,9};
    bool ok=true;
    for(int i=0;i <10;i++){
        if(!(ok=heap_encolar(heap,&elementos[i]))){
            break;
        }
    }
    print_test("Se encolaron todos los elementos..",ok);
    print_test("Longitud correcta...",heap_cantidad(heap)==10);
    print_test("Ver max correcto...",heap_ver_max(heap)==&elementos[9]);
    for(int i=9;i>=0;i--){
        int* elemento=heap_desencolar(heap);
        if(!(ok=(*elemento==i))){
            break;
        }
    }
    print_test("Los elementos se desencolaron en orden...",ok)
    print_test("Longitud correcta...",heap_cantidad(heap)==0);
    print_test("Ver max correcto...",heap_ver_max(heap)==NULL);

    printf("ELEMENTOS DESORDENADOS:\n");
    int e_desordenados[10]={9,4,6,2,7,5,8,3,1,0};
    for(int i=0;i<10;i++){
        if(!(ok=heap_encolar(heap,&e_desordenados[i]))){
            break;
        }
    }
    print_test("Se encolaron todos los elementos..",ok);
    print_test("Longitud correcta...",heap_cantidad(heap)==10);
    print_test("Ver max correcto...",heap_ver_max(heap)==&elementos[9]);
    for(int i=9;i>=0;i--){
        int* elemento=heap_desencolar(heap);
        if(!(ok=(*elemento==i))){
            break;
        }
    }
    print_test("Los elementos se desencolaron en orden...",ok)
    print_test("Longitud correcta...",heap_cantidad(heap)==0);
    print_test("Ver max correcto...",heap_ver_max(heap)==NULL);
    heap_destruir(heap,NULL);
}
Пример #6
0
void heapsort(void *elementos[], size_t cant, cmp_func_t cmp){

	heap_t* heap_aux= (heap_t *) heapify( elementos, cant, cmp);

	int fin=heap_aux->cantidad;
	while (fin>0) {
		elementos[fin-1]=heap_desencolar(heap_aux);

		downheap(heap_aux,0,fin-1);
		fin--;
	}

	heap_destruir(heap_aux, NULL);
}