Examen parcial repaso algoritmos 222 PDF

Title Examen parcial repaso algoritmos 222
Course Algoritmos y Estructura de Datos
Institution Universidad Peruana de Ciencias Aplicadas
Pages 7
File Size 147.1 KB
File Type PDF
Total Downloads 4
Total Views 73

Summary

Download Examen parcial repaso algoritmos 222 PDF


Description

Ejercicio 1 - Caso: Ruleta de Apuestas Las Vegas siempre anda en búsqueda de nuevas formas de entretener a sus numerosos visitantes y darles la oportunidad de “ganar dinero”. Por ello han ideado un nuevo juego y le han invitado a participar del desarrollo de un programa para darle soporte. El nuevo juego, llamado ruleta de apuestas, permite a los participantes ingresar anotando su nombre y el monto de dinero con el que cuentan para participar. Los participantes toman su lugar alrededor de una mesa virtual circular muy grande, en la que pueden entrar decenas de miles de participantes. Los participantes van llegando y se sientan a la derecha de la persona anterior y hacen un depósito de $10. El juego empieza cuando hayan ingresado por lo menos 1000 participantes y el último participante en anotarse deberá empezar lanzando un dado de una variedad de caras numeradas desde 25000 a 15000000, luego se deberá pasar el dado a la izquierda, el número de posiciones indicado en el lanzamiento. La persona que reciba el dado ganará el monto acumulado del depósito de todos los participantes anotados menos el 15% que es la ganancia de la casa. Al final de cada rotación, más personas pueden entrar a la mesa pero ahora pueden entrar en cualquier posición que deseen y, como es un juego tan popular, miles de personas entran en cada nueva ronda hasta un máximo de 150000 en total. En cada nueva rotación, los nuevos participantes pagán $10 y los participantes actuales deben pagar $5. El participante que se quedó con el super dado, deberá lanzar y nuevamente se pasa el dado hacia la izquierda el número de posiciones indicado. El participante que finalmente recibe el dado gana el pozo acumulado menos el 15% y el juego vuelve a empezar. Los participantes que se queden sin dinero deberán retirarse. Sugerencia: genere participantes aleatoriamente para no tener que ingresarlos manualmente cada vez. Criterio de Calificación El desarrollo no debe hacer uso de contenedores STL. (1 punto) Desarrollar con POO. (2 puntos) Creación de la Estructura de Datos para almacenar los elementos (2 puntos) Creación de un método para generar “n” elementos según especificación e incluirlo en la estructura de datos. (1 puntos) Creación de los métodos para inserción y retiro de los elementos según especificación. (2 puntos) Implementación de la funcionalidad indicada, hacer la verificación mediante una función de prueba. %%writefile listaDoble.cpp #include #include #include using namespace std; template struct Node{ T value; Node* next; Node* back; Node(T v, Node* n=nullptr, Node* b=nullptr):value(v),next(n),back(b) {} };

template class ListD{ private: Node* inicio; Node* fin; Node* it; unsigned long size; public: ListD(){ it=inicio=fin=nullptr; size=0; } void next(int n){ for(int i=0;inext!=nullptr?it->next:inicio; } void back(int n){ for(int i=0;iback!=nullptr?it->back:fin; } T getValue(){ return it->value; } void setValue(T& v){ it->value=v; } void update(function f){ Node* aux=inicio; while(aux!=nullptr){ f(aux->value); aux=aux->next; } } long cantidad(){return size;} void push_front(T v){ Node* nuevo=new Node(v); if(size==0){ fin=nuevo; } else{ nuevo->next=inicio; inicio->back=nuevo; } inicio=nuevo; ++size; } void print(){ Node* aux=inicio; while(aux!=nullptr){ coutnext=aux; nuevo->back=aux->back; aux->back=nuevo; nuevo->back->next=nuevo; ++size; } } Node* recover_by_pos(long pos) { if(pos=size) return fin;//else if(pos>size)return nullptr; else{ Node* aux=inicio; for(long i=0;inext; return aux; } } void remove_front() { if(size==0)return; else if(size==1){ delete inicio; inicio=fin=nullptr; --size; } else{ Node aux = inicio; inicio = inicio->next; delete aux; --size; } } void remove_back()

{ if(size==0) return; else if(size == 1){ delete inicio; inicio = fin = nullptr; --size; } else{ Node* aux = fin; fin = recover_by_pos(size-2); fin->next = nullptr; delete aux; --size; } } //eliminar inicio O(1) //eliminar final O(n) //eliminar por posicion }; class Participante{ public: string nombre; float monto; Participante(string nombre="",float monto=10.0f):nombre(nombre),monto(monto){ } void setMonto(float v=5){ monto-=v; } }; class Juego{ ListD participantes; //unsigned int cantidad; float deposito,casa; public: Juego(){ // cantidad=0; deposito=0;//fondo acumulado casa=0;//fondo de ganancia de la casa de apuesta } void inicializar(){ for(int i=0;idado(); j->ganador(); j->simulacion(); j->actualizarFondo(); }

Ejercicio 2 Haciendo uso de las pilas desarrollado en clase, realice un método para validar la concordancia de los signos de agrupación paréntesis, corchetes y llaves del lenguaje de programación c++, por ejemplo: Input: Empieza con un número N (1...


Similar Free PDFs