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; }
int main() { Cola cola; cola.insert(3); cola.insert(4); cola.insert(5); cola.imprimir(); }
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(); }
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); }
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; }
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; }