int main() {
	int x;
	int y;
	Cola ka;
	Pila ko;
	cout<<"\n\n 1. Colas \n\n";
	cout<<"\n\n 2. Pilas \n\n";
	cin>> y ;
	if (y==1){
		cout << "\n\n ingrese opcion 1 si desea agregar datos a la cola\n\n";
		cout << "\n\n ingrese opcion 2 si desea desencolar datos\n\n";
		cout<< "\n\n ingrese opcion 3 si desea imprimir la cola\n\n";
		cout<< "\n\n ingrese opcion 4 si desea saber cuantos elementros has ingresado\n\n";
		
	
	do{
			cout << "\n opcion 1 , opcion 2 , opcion 3 u opcion 4 \n"<< endl;
		cin>> x ;
		cout << "\n\n"<<endl;
		if  (x==1){
			cout << "\n\n ingresar elemento\n\n"<< endl;
			cin >> letra;
			cout << "\n\n"<<endl;
			ka.insertar(letra);	}else if (x==2 && frente !=NULL){
			ka.mostrar();}else if (x==3 && frente !=NULL){
			ka.imprimir();	}else if (x=4){
			ka.contador();}
			}while (frente!=NULL);}else if (y==2){
int main(int argc, char* argv[]){
	Cola<MensajeGenerico>* colaMaestra = new Cola<MensajeGenerico>(COLA_MAESTRA,0);
	MensajeGenerico msg;
	while(1){
		// RECIBO PEDIDO DE BROADCAST
		colaMaestra->leer(BROKER_BROADCAST_ID, &msg);
		std::cout << "RECIBI UN PEDIDO DE BROADCAST DE: " << msg.id << std::endl;
		
		// MANDO EL BROADCAST
		// ABRO ARCHIVO DE PROCESOS
		int fd = open(BROKER_PIDS_FILE, O_RDONLY | O_CREAT, S_IRUSR | S_IWUSR);
		// TOMO LOCK
		struct flock fl;
		fl.l_type=F_RDLCK;
    		fl.l_whence=SEEK_SET;
    		fl.l_start=0;
    		fl.l_len=0;
		fcntl(fd,F_SETLKW,&fl);

		Proceso p;
		while(read(fd,&p,sizeof(p)) > 0){
			if(!p.borrado && p.tipo == PUERTA){
				long id = p.id;
				msg.mtype = id;
				colaMaestra->escribir(msg);
				std::cout << "MANDO MENSAJE DE BROADCAST A: " << msg.mtype << std::endl;
			}
		}
		// DEVUELVO LOCK
		fl.l_type=F_UNLCK;
    		fcntl(fd,F_SETLK,&fl);
	}

	return 0;
}
Ejemplo n.º 3
0
int main()
{
    Cola cola;
    cola.insert(3);
    cola.insert(4);
    cola.insert(5);

    cola.imprimir();
}
Ejemplo n.º 4
0
int Modular::Inversar (int vA, int vModulo)
{
    int k, cociente, resto, divisor, resto_pre;
    Cola <int> ColaCociente;
    k = 0;
    resto = -1;
    divisor=vA;
    cociente = vModulo;

    // rutina crea Cola de cocientes ColaQ , resto previo, paso k

    while (resto!=0)
    {
        resto_pre = resto;
        resto = cociente % divisor;
        cociente = cociente / divisor;

        ColaCociente.Insertar(cociente);

        cociente = divisor;
        divisor = resto;
        k++;
        //std::cout << "resto_pre"<< resto_pre ;
    }

    // Comprobacion si existe Inverso resto_pre = 1
    //std::cout << "fueraresto_pre"<< resto_pre ;
    if (resto_pre == 1) //existe Inverso en k+2, (rutina while agrega
        // un valor de mas, considerar k+1)
    {
        int p, q, paso;
        int inverso;
        inverso = -1;
        p = 0;
        q = 1;
        paso = 2;
        //std::cout << "k"<< k ;
        for (paso; paso < k + 1; paso++)
        {
            inverso = Restar(p, q*ColaCociente.GetData(), vModulo);
            //std::cout << "cociente" << ColaCociente.GetData() << std::endl;
            //std::cout << "inver" << inverso << std::endl;
            ColaCociente.Eliminar();
            p = q;
            q = inverso;

        }
        return inverso;
    }

    return -1;

    //std::cout << "resto" << resto_pre << std::endl;
    //ColaQ.Imprimir();

}
Ejemplo n.º 5
0
int main()
{
    cout << "Cola Dinamica" << endl;
    Cola C;
    C.agregar(1);
    C.agregar(2);
    C.agregar(3);
    expandir(C);
    imprimir(C);

    return 0;
}
Cola * invertirCola(Cola *ori)
{
	Pila *inc = new Pila();
	while (!ori->isEmpty())
	{
		inc->push(ori->dequeue());
	}
	Cola *out = new Cola();
	while (!inc->isEmpty())
	{
		out->enqueue(inc->pop());
	}
	return out;
}
		void enviar (const IPersonaMsg& msg, const char* prg)
		{
			LOG_IP ("Enviando mensaje a componente:\n"
					"\tOP: %d (%s).", msg.op,
					strIPersonaOp (msg.op));
			int err = mqComp.escribir (msg);
			System::check (err, prg);
		}
Ejemplo n.º 8
0
int main() {
	Pila<float> pila;
	Cola<float> cola;

	cout << " -> Pila" << endl;
	for (int i = 0; i < 10; i++)
		pila.insertar(i + 0.01);

	while (!pila.estaVacia())
		cout << "\t" << pila.sacar() << endl;

	cout << endl << " -> Cola " << endl;
	for (int i = 0; i < 10; i++)
		cola.insertar(i + 0.03);

	while (!cola.estaVacia())
		cout << "\t" << cola.sacar() << endl;

	return 0;
}
int main()
{
  Pila *x = new Pila();
  x->push(12);
  x->push(13);
  x->push(14);
  
  cout<<"Pila original "<<endl;
  x->print();
  cout<<endl;
  
  Pila *y = new Pila();
  y = invertirPila(x);
  cout<<"Pila invertida "<<endl;
  y->print();

  cout<<"\n-------------------------"<<endl<<endl;

  Cola *q = new Cola();
  q->enqueue(9);
  q->enqueue(8);
  q->enqueue(7);
  q->enqueue(6);
  q->enqueue(5);
  q->enqueue(4);

  cout<<"Cola original "<<endl;
  q->print();
  cout<<endl;

  Cola *q2 = new Cola();
  q2 = invertirCola(q); 

  cout<<"Cola invertida "<<endl;
  q2->print();
  cout<<endl;
 
  int loop;
  cin >> loop;
  return 0;
}
Ejemplo n.º 10
0
void ArbolB<g>::imprimirNiveles(){
	Cola<Nodo*> nodos;
	int enEsteNivel = 0, saltarLineaEn = 1, conteo = 0;
	nodos.encolar(raiz);
	Nodo *actual;
	while(!nodos.estaVacia()){
		actual = nodos.sacar();
		cout<<"|";
		for(int i=0; i<actual->n; ++i)
			cout<<actual->infos[i]<<",";
		cout<<"\b|;";
		if(actual->tieneHijos()) {
			enEsteNivel+= actual->n+1;
			for(int i=0; i<=actual->n; ++i)
				nodos.encolar(actual->hijos[i]);
		}
		if(++conteo == saltarLineaEn){
			cout<<endl;
			saltarLineaEn = enEsteNivel;
			conteo = enEsteNivel = 0;
		}
	}
	cout<<endl;
}
int main() {

// este codigo es como usted comento que iba a revisar nuestro proyecto


	//inicio proceso cola
	cout<<"\n\n\n<<<Proceso de Cola>>>"<<endl;
	Cola cl;

	cl.Listavaciacola(); // indica si la lista esta vacia o contiene datos
	cl.tamaniocola();  //indica el tamanio de la lista

	cl.Pushcola("jo"); 	//prueba que no permite mas o menos de 1 caracter en la cola
	cl.Pushcola("j");
	cl.Pushcola("o");
	cl.Pushcola("s");
	cl.Pushcola("e");	 //ingreso de caracteres al programa con la funcion push

	cl.tamaniocola();  //indica el tamanio de la lista
	cl.Listavaciacola();  // indica si la lista esta vacia o contiene datos

	cl.Imprimircola();	 //imprimir todos los nodos existentes hasta el momento
	cl.Topcola(); 		//imprimir el caracter que se encuentra en top en este momento
	cl.Popcola(); 		//eliminar el caracter que se encuentra en top en este momento
	cl.Imprimircola();
	cl.tamaniocola();  //indica el tamanio de la lista
	cl.Topcola();
	cl.Popcola();
	system("PAUSE");
	//fin proceso cola

	//inicio proceso pila
	cout<<"\n\n\n<<<Proceso de Pila>>>"<<endl;
	Pila pl;
	pl.Listavaciapila(); // indica si la lista esta vacia o contiene datos
	pl.tamaniopila();  //indica el tamanio de la lista

	pl.Pushpila("j");
	pl.Pushpila("o");
	pl.Pushpila("s");
	pl.Pushpila("e"); 	//ingreso de caracteres al programa con la funcion push
	pl.Pushpila("jo"); 	//prueba que no permite mas o menos de 1 caracter en la pila

	pl.Listavaciapila(); // indica si la lista esta vacia o contiene datos
	pl.tamaniopila();  //indica el tamanio de la lista

	pl.Imprimirpila();	//imprimir todos los nodos existentes hasta el momento
	pl.tamaniopila();  //indica el tamanio de la lista
	pl.Toppila();		//imprimir el caracter que se encuentra en top en este momento
	pl.Poppila();		//eliminar el caracter que se encuentra en top en este momento
	pl.Imprimirpila();
	pl.tamaniopila();  //indica el tamanio de la lista
	pl.Toppila();
	pl.Poppila();
	system("PAUSE");
	//fin proceso pila

	/*menu para ejecutar funciones

	string caracter;
	Cola cl;
	Pila pl;
	int opcion;
	while(opcion!=13)
	{
		cout<<"\n\n\n<<<Proceso de pilas y colas>>>"<<endl;
		cout<<"opciones para cola: "<<endl;
		cout<<"1. push. "<<endl;
		cout<<"2. pop. "<<endl;
		cout<<"3. top. "<<endl;
		cout<<"4. imprimir. "<<endl;
		cout<<"5. tamaño de lista. "<<endl;
		cout<<"6. verificar si hay datos en lista.\n"<<endl;
		cout<<"opciones para pila: "<<endl;
		cout<<"7. push. "<<endl;
		cout<<"8. pop. "<<endl;
		cout<<"9. top. "<<endl;
		cout<<"10. imprimir. "<<endl;
		cout<<"11. tamaño de lista. "<<endl;
		cout<<"12. verificar si hay datos en lista.\n\n"<<endl;
		cout<<"13. salir.\n\n"<<endl;
		cout<<"ingrese opcion que desea realizar: "<<endl;
		cin>>opcion;

		switch(opcion)
		{
		case 1:
			cout<<"ingrese caracter que desea ingresar: "<<endl;
			cin>>caracter;
			cl.Pushcola(caracter);
			break;
		case 2:
			cl.Popcola();
			break;
		case 3:
			cl.Topcola();
			break;
		case 4:
			cl.Imprimircola();
			break;
		case 5:
			cl.tamaniocola();
			break;
		case 6:
			cl.Listavaciacola();
			break;
		case 7:
			cout<<"ingrese caracter que desea ingresar: "<<endl;
			cin>>caracter;
			pl.Pushpila(caracter);
			break;
		case 8:
			pl.Poppila();
			break;
		case 9:
			pl.Toppila();
			break;
		case 10:
			pl.Imprimirpila();
			break;
		case 11:
			pl.tamaniopila();
			break;
		case 12:
			pl.Listavaciapila();
			break;
		case 13:
			cout<<"\n HASTA LA PROXIMA"<<endl;
			break;
		default:
			cout<<"esta opcion no esta disponible"<<endl;
			cout<<"por favor, ingrese una opcion entre 1 y 12"<<endl;

	}
	system("PAUSE");
	}
	*
	 */

}
int main (int argc, char** argv) try
{
	std::cout << "Iniciando componente..." << std::endl;

	int err;
	Cola<IPersonaMsg> mqComp (calcularRutaMQ (argv[0]), 1);
	long mtype = getpid ();

	IPersonaMsg msg;
	IPersonaMsg res;

	// Bloqueo en la cola hasta que haya una solicitud de operación
	err = mqComp.leer (mtype, &msg);
	System::check (err);

	std::cout << "[COMPONENTE] Se obtuvo solicitud: op "
			<< msg.op << std::endl;

	// Acá el componente lee de la red una petición a esta puerta
	// Simulamos que una persona quiere entrar
	// Enviamos la operación de solicitud de entrada
	res.mtype = msg.msg.spo.rtype;
	res.op = OP_SOLIC_ENTRAR_MUSEO_PERSONA;
	// Id de la persona que quiere entrar como se recibió de la red
	res.msg.osemp.idOrigen = 12345;
	err = mqComp.escribir (res);
	System::check (err);

	// Luego esperamos que responda la interfaz
	err = mqComp.leer (mtype, &msg);
	System::check (err);

	if (msg.op != NOTIF_ENTRADA_PERSONA) {
		std::cerr << "[COMPONENTE] Interfaz respondio con"
				" operación incorrecta " << msg.op
				<< std::endl;
		goto out;
	}

	std::cout << "[COMPONENTE] La interfaz respondio: op "
				<< msg.op << std::endl;
	std::cout << "[COMPONENTE] La interfaz respondio: res "
					<< msg.msg.nep.res << std::endl;

	// Acá el componente debería responder por la red al origen
	System::millisleep (2000);

	// Y despues volver al inicio
	// Aquí simulamos que la persona quiere salir

	// Espera por la próxima solicitud de la interfaz
	err = mqComp.leer (mtype, &msg);
	System::check (err);

	// Simulamos que una persona quiere salir

	// Enviamos la operación de solicitud de salida
	res.mtype = msg.msg.spo.rtype;
	res.op = OP_SOLIC_SALIR_MUSEO_PERSONA;
	// Id de la persona que quiere salir como se recibió de la red
	res.msg.ossmp.idOrigen = 12345;
	err = mqComp.escribir (res);
	System::check (err);

	// Luego esperamos que responda la interfaz
	err = mqComp.leer (mtype, &msg);
	System::check (err);

	if (msg.op != NOTIF_SALIDA_PERSONA) {
		std::cerr << "[COMPONENTE] Interfaz respondio con"
				" operación incorrecta " << msg.op
				<< std::endl;
		goto out;
	}

	std::cout << "[COMPONENTE] La interfaz respondio: op "
				<< msg.op << std::endl;
	std::cout << "[COMPONENTE] La interfaz respondio: res "
					<< msg.msg.nsp.res << std::endl;

	// Acá el componente debería responder por la red al origen
	System::millisleep (2000);

	// Fin de la simulación
	// Enviamos el cierre para que el test de la interfaz
	// termine.

out:
	// Envía notificación de cierre
	err = mqComp.leer (mtype, &msg);
	System::check (err);

	res.mtype = msg.msg.spo.rtype;
	res.op = OP_NOTIFICAR_CIERRE_MUSEO;
	err = mqComp.escribir (res);
	System::check (err);
	return 0;
} catch (...) {
	// try-catch para que se corran los destructores
	std::cerr << "[COMPONENTE] Error al correr la simulación."
			<< std::endl;
}
int main (int argc, char** argv)
{
	std::cout << "Iniciando componente..." << std::endl;

	Cola<IPuertaMsg> mqComp (calcularRutaMQ (argv[0]), 'A');
	long mtype = getpid ();
	IPuertaMsg msg = {};
	IPuertaMsg res = {};
	int err;

	std::cout << "Aceptando mensajes..." << std::endl;

	while (true) {
		err = mqComp.leer (mtype, &msg);
		System::check (err);

		switch (msg.op) {
		case OP_SOLIC_ENTRAR_MUSEO_PERSONA:
			// Este componente siempre deja entrar las personas
			std::cout << "Persona entrando por puerta "
				<< msg.msg.semp.idPuerta << std::endl;
			res.mtype = msg.msg.semp.rtype;
			res.op = NOTIF_ENTRADA_PERSONA;
			res.msg.nep.res = ENTRO;
			err = mqComp.escribir (res);
			System::check (err);
			break;
		case OP_SOLIC_ENTRAR_MUSEO_INVESTIGADOR:
			// Este componente guarda las pertenencias en el numero
			// de locker.
			std::cout << "Investigador entrando por puerta "
					<< msg.msg.semi.idPuerta
					<< " con pertenencias "
					<< msg.msg.semi.pertenencias << std::endl;
			res.mtype = msg.msg.semi.rtype;
			res.op = NOTIF_ENTRADA_INVESTIGADOR;
			res.msg.nei.res = ENTRO;
			res.msg.nei.numeroLocker = msg.msg.semi.pertenencias;
			err = mqComp.escribir (res);
			System::check (err);
			break;
		case OP_SOLIC_SALIR_MUSEO_PERSONA:
			// Responde que salió
			std::cout << "Persona saliendo por puerta "
					<< msg.msg.ssmp.idPuerta << std::endl;
			res.mtype = msg.msg.ssmp.rtype;
			res.op = NOTIF_SALIDA_PERSONA;
			res.msg.nsp.res = SALIO;
			err = mqComp.escribir (res);
			System::check (err);
			break;
		case OP_SOLIC_SALIR_MUSEO_INVESTIGADOR:
			// Devuelve las pertenencias que guardo en el
			// numero de locker.
			// No checkea puerta correcta
			std::cout << "Investigador saliendo por puerta "
					<< msg.msg.ssmi.idPuerta
					<< " con numero de locker "
					<< msg.msg.ssmi.numeroLocker << std::endl;
			res.mtype = msg.msg.ssmi.rtype;
			res.op = NOTIF_SALIDA_INVESTIGADOR;
			res.msg.nsi.res = SALIO;
			res.msg.nsi.pertenencias = msg.msg.ssmi.numeroLocker;
			err = mqComp.escribir (res);
			System::check (err);
			break;
		default:
			std::cerr << "Componente recibio mensaje inválido: "
				<< msg.op << std::endl;
		}
	}

	/* not reached */
	return 0;
}