예제 #1
0
pila_t* mostrar_enviados(pila_t* pila, vector_t *vectorzonas, vector_t* vectorprecios){
	pedido_t* pedido;
	pila_t * pila_nueva=pila_crear();
	pila_t *pila_aux=pila_crear();
	int recaudado=0;
	printf ("\n");
	printf ("Los pedidos que fueron enviados, en orden del mas reciente al mas antiguo, son: \n");
	printf ("\n");
	while (!pila_esta_vacia(pila)){
		pedido=pila_desapilar(pila);
		int* precio= (int*) vector_obtener(vectorprecios, pedido->zona-1);
		recaudado+=( (*precio) *(pedido->cantidad));
		pila_apilar(pila_aux, pedido);
		printf("Pedido: %s Cantidad: %d Zona: %d \n",pedido->nombre,pedido->cantidad,pedido->zona);
	}
	printf("\n\n");
	printf("Lo recaudado en total en los ultimos envios: $ %d\n", recaudado);
	while (!pila_esta_vacia(pila_aux)){
		pila_apilar(pila_nueva, pila_desapilar(pila_aux));
		}
	pila_destruir(pila_aux);
	pila_t *piladestruir=pila;
	if (piladestruir)
		pila_destruir(piladestruir);
	return pila_nueva;
}
예제 #2
0
void pruebas_cola_de_pilas() {
	printf("\nINICIO DE PRUEBAS CON COLA DE PILAS\n");
	
	/* Declaro las variables a utilizar*/
	cola_t* cola = cola_crear();
	pila_t* pila = pila_crear();
	pila_t* pila2 = pila_crear();
	int a = 1, b = 2, c = 3, d = 4, e = 5;
	int* p_a = &a;
	int* p_b = &b;
	int* p_c = &c;
	int* p_d = &d;
	int* p_e = &e;
	
	/* Inicio de pruebas */
	// Apilo todos los elementos
	pila_apilar(pila, p_a);
	pila_apilar(pila, p_b);
	pila_apilar(pila, p_c);
	pila_apilar(pila2, p_d);
	pila_apilar(pila2, p_e);
	
	// Encolo las pilas
	print_test("Prueba encolar pila 1", cola_encolar(cola, pila));
	print_test("Prueba encolar pila 2", cola_encolar(cola, pila2));
	
	/* Destruyo la cola */
	cola_destruir(cola, pila_destruir_wrapper);
	print_test("La cola fue destruida", true);
}
예제 #3
0
파일: 9.c 프로젝트: nee47/abb
// Crea iterador
abb_iter_t *abb_iter_in_crear(const abb_t *abb){
  abb_iter_t* iter = malloc(sizeof(abb_iter_t));
  if (!iter) return NULL;
  iter->abb = abb;
  iter->pila = pila_crear(); 
  if (abb->cantidad_nodos == 0) return iter;
  apilar_nodos(iter, abb->raiz);
  return iter;
}
예제 #4
0
파일: tp1.c 프로젝트: wizzard94/TP1
/*
 Desencolar y realizar validacion del Documento tipo/numero del votante y no haber votado
 Crear pila para ciclo de votacion actual
*/
bool comando_votar_inicio(maquina_votacion_t* maquina) {
    #ifdef DEBUG
    printf("Comando votar inicio ejecutado.\n");
    #endif
    // Error handling
    if(maquina->estado == CERRADA)      { return error_manager(MESA_CERRADA); }
    if(maquina->estado == VOTACION)     { return error_manager(OTRO); }
    if(cola_esta_vacia(maquina->cola))  { return error_manager(NO_VOTANTES); }

    votante_t* votante_padron = NULL;
    bool enpadronado = false;

    votante_t* votante_espera = cola_desencolar(maquina->cola);
    if(!votante_espera) return error_manager(OTRO);

    #ifdef DEBUG
    printf("Votante desencolado: %s, %s\n", votante_espera->documento_tipo, votante_espera->documento_numero);
    #endif

    pila_t* ciclo_votacion = pila_crear();
    lista_iter_t* lista_iter = lista_iter_crear(maquina->padron);

    if(!ciclo_votacion || !lista_iter) {
        if(ciclo_votacion) pila_destruir(ciclo_votacion, NULL);
        if(lista_iter) free(lista_iter);
        return error_manager(OTRO);
    }

    while(!lista_iter_al_final(lista_iter))
    {
        votante_padron = lista_iter_ver_actual(lista_iter);
        if(votante_iguales(votante_padron, votante_espera))
        {
            enpadronado = true;
            break;
        }
        lista_iter_avanzar(lista_iter);
    }
    lista_iter_destruir(lista_iter);
    votante_destruir(votante_espera);

    if(!enpadronado || votante_get_voto_realizado(votante_padron))
    {
            pila_destruir(ciclo_votacion, NULL);
            return enpadronado ? error_manager(VOTO_REALIZADO) : error_manager(NO_ENPADRONADO);
    }

    votante_set_voto_realizado(votante_padron);
    maquina->estado = VOTACION;
    maquina->ciclo = ciclo_votacion;
    maquina->votando_cargo = PRESIDENTE;

    mostrar_menu_votacion(maquina);
    return true;
}
예제 #5
0
파일: abb.c 프로젝트: FacundoAcevedo/ABB
abb_iter_t *abb_iter_in_crear(const abb_t *arbol){
    // Si el arbol no existe
    if (!arbol) return NULL;
    abb_iter_t* iter = malloc(sizeof(abb_iter_t));
	iter->pila = pila_crear();
	abb_nodo_t* nodo = arbol->raiz;
	if (arbol->raiz){
		while (nodo->izq){
			pila_apilar(iter->pila, nodo);
			nodo = nodo->izq;
		}
	}
	iter->actual = nodo;
    return iter;
}
예제 #6
0
파일: abb.c 프로젝트: fonse451/abb
abb_iter_t *abb_iter_in_crear(const abb_t *arbol){
        abb_iter_t* iter = malloc(sizeof(abb_iter_t));
        if (iter == NULL){
                return NULL;
        }
        iter->pila = pila_crear();
        if (iter->pila == NULL){
                free(iter);
                return NULL;
        }
        iter->arbol = arbol;
    
        auxiliar_creacion(iter,arbol->raiz);
        return iter;
}
예제 #7
0
파일: abb.c 프로젝트: wizzard94/ABB
abb_iter_t *abb_iter_in_crear(const abb_t *arbol) {
    if(!arbol) return NULL;

    abb_iter_t* iter = malloc(sizeof(abb_iter_t));
    if(!iter) return NULL;
    iter->pila = NULL;

    if(!arbol->raiz) return iter;

    pila_t* pila = pila_crear();
    if(!pila)
    {
        free(iter);
        return NULL;
    }
    apilar_de_mayor_a_menor(pila, arbol->raiz);
    iter->pila = pila;

    return iter;
}
예제 #8
0
/* Pruebas */
void prueba_tipos() {

	// Declaro de variables
	vector_t *vector;
	lista_t* lista;
	pedido_t* pedido1;
	pedido_t* pedido2;
	pedido_t* pedido3;
	pedido_t* pedido4;
	pedido_t* pedido5;
	pila_t* pila;

	// las inicializo
	vector = vector_crear();
	pila=pila_crear();

	char a[20]="agustin";
	char b[20]="bernardo";
	char c[20]="carlos";
	char d[20]="damian";
	char e[20]="esteban";


	printf("---------------------------PRUEBAS---------------------------\n");

	//Creo un vector
	vector=vector_crear(vector);
	print_test("Creo un vector", vector!=NULL );

	//Creo 5 pedidos
	pedido1=pedido_crear(a,1,2);
	pedido2=pedido_crear(b,2,3);
	pedido3=pedido_crear(c,3,2);
	pedido4=pedido_crear(d,4,3);
	pedido5=pedido_crear(e,5,2);

	//Agrego los 4 primeros pedidos

	print_test("Agrego pedido 1", vector_agregar_pedido(vector,pedido1) );
	print_test("Agrego pedido 2", vector_agregar_pedido(vector,pedido2) );
	print_test("Agrego pedido 3", vector_agregar_pedido(vector,pedido3) );
	print_test("Agrego pedido 4", vector_agregar_pedido(vector,pedido4) );
	printf("asd");

	mostrar_registrados (vector);
	/*
	//inserto 1er elemento
	print_test("Inserto primer elemento alumno1", lista_insertar_primero(lista,alumno1) );

	//inserto ultimo
	print_test("Inserto ultimo elemento alumno2", lista_insertar_ultimo(lista,alumno2) );

	//inesrto un nuevo ultimo
	print_test("Inserto ultimo elemento alumno3", lista_insertar_ultimo(lista,alumno3) );

	//veo el primero
	print_test("Veo el primer elemento(alumno1)", alumno1==lista_ver_primero(lista));

	//borro el primero y veo devuelta
	print_test("Borro el primero", lista_borrar_primero(lista));
	print_test("Veo el primer elemento(alumno2)", alumno2==lista_ver_primero(lista));

	//veo el largo de la lista
	print_test("Veo el largo de la lista (2)", 2==lista_largo(lista));

	//creo iterador
	iter= lista_iter_crear(lista);

	//pruebas del iterador
	print_test("Hago avanza al iterador", lista_iter_avanzar(iter));
	print_test("Veo elemento actual del iterador (alumno3)", alumno3==lista_iter_ver_actual(iter));
	print_test("Hago avanza al iterador", lista_iter_avanzar(iter));
	print_test("Veo si esta al final", lista_iter_al_final(iter));

	//pruebas de lista junto con iterador
	print_test("Inserto de nuevo alumno1", lista_insertar(lista,iter,alumno1));
	print_test("Lo borro", alumno1==lista_borrar(lista,iter));

	//inserto 1er elemento
	print_test("Inserto primer elemento alumno1", lista_insertar_primero(lista,alumno1) );
	//destruyo el iterador
	lista_iter_destruir(iter);
	//creo iterador
	iter= lista_iter_crear(lista);
	print_test("Destruyo iterador,lo creo devuelta y borro el primer elemento (alumno1)", alumno1==lista_borrar(lista,iter));
	destruir_dato(alumno1);
	//destruyo lista e iterador
	lista_iter_destruir(iter);
	lista_destruir(lista,destruir_dato);
*/
}