예제 #1
0
int main()
{
    const int TOTAL_A_ENCOLAR=10;
    const int PRIMERO_EN_ENCOLAR=5;
    Cola cola;
    Persona x,y,z,v;
    Persona* u;
    char nombre[TAMANO_NOMBRE];
    int i,j;

    x.clave=1;
    strcpy(x.nombre,"primero");
    y.clave=2;
    strcpy(y.nombre,"segundo");
    z.clave=3;
    strcpy(z.nombre,"tercero");
    v.clave=4;
    strcpy(v.nombre,"cuarto");

    printf("Inicializando cola...\n");
    inicializa(&cola);

    printf("Poniendo 4 elementos en cola...\n");
    encola(&x,&cola);
    encola(&y,&cola);
    encola(&z,&cola);
    encola(&v,&cola);

    for(i=PRIMERO_EN_ENCOLAR,j=TOTAL_A_ENCOLAR;i<=j;i++){
        if (estaLlena(&cola)){
            pausar();
            printf("\nQuitando uno de cola...");
            v=desencola(&cola);
            imprimeElemento(&v);
            printf("\n");
        }
        pausar();
        x.clave=i;
        strcpy(x.nombre,"El ");
        strcat(x.nombre,itoa(i, nombre, 10));
        strcat(x.nombre,"o.");
        printf("Poniendo <<");
        imprimeElemento(&x);
        printf(">> en cola...\n");
        encola(&x,&cola);
    }
    pausar();
    printf("Muestreando el frente...");
    u=frente(&cola);
    imprimeElemento(u);
    printf("\nQuitando todos de cola...\n");
    while(!estaVacia(&cola)){
        v=desencola(&cola);
        imprimeElemento(&v);
        printf("\n");
    }
    v=desencola(&cola);
    return 0;
}
예제 #2
0
void apila(TipoElemento *x, Pila *p){

    if(!estaLlena(p)){
        p->elementos[++p->tope] = *x;
    }
    else{
        imprimeError("\n\n\t\tLA PILA ESTA LLENA");
    }
}
예제 #3
0
unsigned Calesita::encontrarLugarLibre() const {
	if (!estaLlena()) {
		unsigned indice = 0;
		while (indice < capacidad) {
			if (ubicaciones[indice] == NULL) {
				return indice;
			}
			++indice;
		}
	}
	throw std::string("Calesita Llena");
}
예제 #4
0
void Calesita::agregarNinio(const Ninio& ninio) {
	if (!estaLlena()) {
		unsigned ubicacion = ninio.getUbicacionPreferida(capacidad);
		char buffer[50];
		sprintf(buffer, "%d", ubicacion);
		if (estaOcupado(ubicacion)) {
			Logger::getLogger()->Log("CALESITA: El ninio  " + ninio.getNombre() + " intento"
					" subirse a la ubicacion " + buffer + " "
					"y estaba ocupada");
			ubicacion = encontrarLugarLibre();
			sprintf(buffer, "%d", ubicacion);
		}
		ubicaciones[ubicacion] = new Ninio(ninio);
		Logger::getLogger()->Log("CALESITA: El ninio  " + ninio.getNombre() + " se subio a"
				" la ubicacion " + buffer);
		++cantidadOcupada;
	}
	else {
		Logger::getLogger()->Log("CALESITA: El ninio  " + ninio.getNombre() + " no se pudo"
				" ubicar en la calesita. Calesita Llena");
		throw std::string("Calesita Llena");
	}
}