📊 Tipo Prueba: Vectores & Funciones CRUD
16 casos prácticos tipo prueba universitaria y técnica (10 sistemas clásicos de consola + 6 misiones especiales doradas de inventarios gamer). Cada ejercicio modela un sistema de consola completo con Menú interactivo y las operaciones fundamentales de arreglos/vectores paralelos en memoria RAM.
Estructura Obligatoria de Cada Sistema en Consola
Todo ejercicio de evaluación debe incluir el Menú y las 6 funciones modulares correspondientes:
Bucle continuo (do-while / while) con opciones 1. Guardar, 2. Listar, 3. Buscar, 4. Actualizar, 5. Eliminar, 6. Reportes y 7. Salir.
do { ... } while (opcion != 7);Solicita los datos por consola y los añade con push_back() / append() en ambos vectores en la misma posición.
nombres.push_back(n); notas.push_back(v);Recorre la lista con un ciclo for imprimiendo cada elemento con su índice [i] para que el usuario conozca las posiciones válidas.
cout << "[" << i << "] " << nombres[i];Búsqueda lineal comparando cada elemento con el valor buscado. Retorna el índice i si lo encuentra o -1 si no existe.
if (v[i] == buscado) return i; return -1;Valida estrictamente los límites de memoria 0 <= idx < size() antes de sobrescribir los nuevos valores pasados por referencia.
if (idx >= 0 && idx < size) vec[idx] = val;Borrado sincronizado. Aplica erase() o eliminación atómica en todos los vectores paralelos al mismo tiempo para evitar desfasar datos.
a.erase(a.begin()+i); b.erase(b.begin()+i);Cálculo de métricas globales: sumas de recursos/DPS/oro, promedios, detección de elemento máximo (MVP/Récord), alertas de umbral crítico (HP < 30%, stock < 5) o clasificaciones ordenadas.
promedio = total / size; | if (val[i] > max) maxIdx = i;1. Herrería & Tienda RPG: Sistema CRUD y Catálogo de Armas
Desarrollar una aplicación de consola para la forja del reino basada en un Menú Principal interactivo (do-while/while). El sistema administra dos vectores paralelos: nombres de armas legendarias (string) y precios en monedas de oro (float). Debe integrar obligatoriamente las 6 operaciones fundamentales: 1) Guardar nueva arma forjada, 2) Listar catálogo completo con índices y precios, 3) Buscar arma por nombre retornando su posición y valor, 4) Actualizar precio en oro por índice validando límites de rango, 5) Eliminar arma de ambos vectores simultáneamente, 6) Reporte estadístico (arma más costosa y precio promedio del arsenal), y 7) Salir.
vector<string> armas | vector<float> preciosOrovoid menu() -> Bucle do-while interactivo con opciones 1 a 7void guardarArma(vector<string>& armas, vector<float>& precios) -> push_back() sincronizadovoid listarArmas(const vector<string>& armas, const vector<float>& precios) -> Recorrido formateado [i]int buscarArma(const vector<string>& armas, const string& buscada) -> Búsqueda lineal (retorna índice o -1)void actualizarPrecio(vector<float>& precios) -> Validación 0 <= idx < size() y asignaciónvoid eliminarArma(vector<string>& armas, vector<float>& precios) -> erase() atómico en ambos vectoresvoid reporteEstadisticas(const vector<string>& armas, const vector<float>& precios) -> Máximo y promedio2. Raid Boss & Squad: Gestión de Escuadrón, Salud y Triaje Crítico
Construir el sistema de comando del Healer durante la batalla de Raid Boss. Gestiona dos vectores paralelos: nombres de héroes del escuadrón (string) y salud/HP actual (float). Mediante un Menú interactivo continuo, debe permitir: 1) Guardar/Reclutar héroe con su HP inicial, 2) Listar escuadrón completo con barra de vida formateada, 3) Buscar héroe por nombre para diagnosticar su salud, 4) Actualizar HP tras recibir daño de boss o curación, 5) Eliminar héroe caído en combate (0% HP), 6) Reporte de Triaje Crítico (filtra héroes con HP < 30% y localiza al héroe con mayor vida), y 7) Salir.
vector<string> heroes | vector<float> hpActualvoid menu() -> Menú con ciclo do-while para el Healervoid guardarHeroe(vector<string>& h, vector<float>& hp) -> Registro de nuevo integrantevoid listarSquad(const vector<string>& h, const vector<float>& hp) -> Vista general del escuadrónint buscarHeroe(const vector<string>& h, const string& target) -> Ubicación por nombrevoid actualizarHP(vector<float>& hp) -> Modificación de salud con validaciónvoid eliminarHeroe(vector<string>& h, vector<float>& hp) -> Borrado sincronizado de héroe caídovoid reporteTriajeCritico(const vector<string>& h, const vector<float>& hp) -> Filtro condicional HP < 30%3. Gremio / Clan MMORPG: Registro de Miembros, DPS y Auditoría MVP
Diseñar el software administrativo de un Clan MMORPG con dos vectores paralelos: Gamertags de miembros (string) y puntos de daño por segundo DPS (float). A través de un Menú Principal interactivo, debe permitir: 1) Guardar nuevo jugador con su DPS de raid, 2) Listar miembros del clan con sus marcas de combate, 3) Buscar miembro por Gamertag mostrando su récord de daño, 4) Actualizar DPS tras equipar artefactos legendarios, 5) Eliminar miembro expulsado sincronizando ambos vectores, 6) Reportes Estadísticos (DPS total acumulado, promedio de la hermandad y Jugador MVP con mayor DPS), y 7) Salir.
vector<string> miembros | vector<float> dpsPuntosvoid menu() -> Menú de administración de clanvoid guardarMiembro(vector<string>& clan, vector<float>& dps) -> Alta de nuevo guerrerovoid listarClan(const vector<string>& clan, const vector<float>& dps) -> Catálogo de combatientesint buscarMiembro(const vector<string>& clan, const string& tag) -> Búsqueda por Gamertagvoid actualizarDPS(vector<float>& dps) -> Recálculo de daño en memoriavoid eliminarMiembro(vector<string>& clan, vector<float>& dps) -> Baja en ambos vectoresvoid reportesDPS_MVP(const vector<string>& clan, const vector<float>& dps) -> Suma total, promedio y MVP4. Hangar Sci-Fi: Control de Bahías, Naves y Asignación de Pilotos
Implementar el sistema de control de tráfico aéreo de una estación espacial con dos vectores paralelos: matrículas/IDs de naves (string) y pilotos asignados (string). El sistema debe operar con un Menú repetitivo que permita: 1) Guardar nave y tripulante en una nueva bahía, 2) Listar estado general de todas las bahías del hangar, 3) Buscar nave por matrícula indicando su bahía exacta y piloto, 4) Actualizar/Reasignar piloto de una nave existente, 5) Eliminar nave despegada o destruida, 6) Reportes de ocupación (total de bahías activas y resumen alfanumérico de naves), y 7) Salir.
vector<string> matriculas | vector<string> pilotosvoid menu() -> Menú de control del hangar espacialvoid guardarNave(vector<string>& mat, vector<string>& pil) -> Acoplamiento de navevoid listarHangar(const vector<string>& mat, const vector<string>& pil) -> Despliegue de bahíasint buscarNave(const vector<string>& mat, const string& buscada) -> Búsqueda de matrícula (retorna bahía)void actualizarPiloto(vector<string>& pil) -> Reasignación de comandantevoid eliminarNave(vector<string>& mat, vector<string>& pil) -> Despegue/Liberación de bahíavoid reporteOcupacion(const vector<string>& mat, const vector<string>& pil) -> Métricas de tráfico5. Alquimia & Forja Rúnica: Almacén de Ingredientes, Crafteo y Stock
Crear el sistema de inventario del taller de alquimia con dos vectores paralelos: materiales mágicos (string) y unidades disponibles en stock (int). Con un Menú de consola interactivo, debe permitir: 1) Guardar nuevo ingrediente descubierto en la bolsa, 2) Listar todos los materiales y sus existencias actuales, 3) Buscar material por nombre para chequear disponibilidad, 4) Actualizar/Consumir stock (crafteo: descuenta unidades si stock > 0), 5) Eliminar material obsoleto o agotado de la bolsa, 6) Reportes de recursos agotados (stock == 0) y total de ítems almacenados, y 7) Salir.
vector<string> materiales | vector<int> stockvoid menu() -> Menú del laboratorio alquímicovoid guardarMaterial(vector<string>& mats, vector<int>& stock) -> Alta de ingrediente rúnicovoid listarAlquimia(const vector<string>& mats, const vector<int>& stock) -> Visualización de bolsaint buscarMaterial(const vector<string>& mats, const string& buscado) -> Búsqueda por nombrevoid actualizarStock(vector<int>& stock) -> Modificación o consumo por crafteovoid eliminarMaterial(vector<string>& mats, vector<int>& stock) -> Borrado sincronizadovoid reporteStockAgotado(const vector<string>& mats, const vector<int>& stock) -> Filtro de ítems en cero6. Torneo Arcade Global: Leaderboard, Clasificación y Tabla de Récords
Desarrollar la máquina de records de un torneo arcade con dos vectores paralelos: Gamertags (string) y puntajes Highscore (int). Mediante un Menú interactivo, debe permitir: 1) Guardar nueva partida y récord de jugador, 2) Listar la tabla de puntajes en el orden actual, 3) Buscar competidor por Gamertag para ver su puntuación, 4) Actualizar score si el jugador bate su marca personal, 5) Eliminar jugador descalificado del torneo, 6) Reportes de Clasificación (algoritmo de ordenamiento burbuja descendente sincronizado del Top Scores y puntuación máxima), y 7) Salir.
vector<string> gamertags | vector<int> puntajesvoid menu() -> Menú arcade de salón de juegosvoid guardarPartida(vector<string>& tags, vector<int>& scores) -> Registro de récordvoid listarRanking(const vector<string>& tags, const vector<int>& scores) -> Tabla de competidoresint buscarJugador(const vector<string>& tags, const string& target) -> Búsqueda de gamertagvoid actualizarScore(vector<int>& scores) -> Actualización de highscorevoid eliminarJugador(vector<string>& tags, vector<int>& scores) -> Retiro de competidorvoid reporteTopScores(vector<string>& tags, vector<int>& scores) -> Ordenamiento burbuja descendente7. Dungeon Crawler MMORPG: Servidor de Mazmorras, Salas y Partidas
Modelar un servidor de dungeons multijugador con tres vectores paralelos: número de sala (int), estado ("LIBRE" / "EN_COMBATE", string) y Gamertag del líder de party (string). Con un Menú interactivo, debe permitir: 1) Guardar nueva mazmorra habilitada en el servidor, 2) Listar estado en tiempo real de todas las salas, 3) Buscar sala por número verificando disponibilidad, 4) Actualizar estado y asignar party (Entrada a Mazmorra), 5) Eliminar sala dada de baja o en mantenimiento, 6) Reportes de servidor (porcentaje de ocupación de salas y lista de parties activas), y 7) Salir.
vector<int> salas | vector<string> estados | vector<string> lideresPartyvoid menu() -> Menú de control del servidor de dungeonsvoid guardarSala(vector<int>& s, vector<string>& est, vector<string>& lid) -> Registro de mazmorravoid listarSalas(const vector<int>& s, const vector<string>& est, const vector<string>& lid) -> Estado de salasint buscarSala(const vector<int>& s, int salaBuscada) -> Búsqueda de sala por IDvoid actualizarEstadoSala(vector<string>& est, vector<string>& lid) -> Entrada o liberación de partyvoid eliminarSala(vector<int>& s, vector<string>& est, vector<string>& lid) -> Borrado triple sincronizadovoid reporteSalasActivas(const vector<int>& s, const vector<string>& est, const vector<string>& lid) -> Métricas de raid8. Supervivencia Post-Apocalíptica: Mochila Táctica, Municiones y Alertas HUD
Diseñar la computadora de supervivencia táctica con dos vectores paralelos: suministros/municiones (string) y unidades en inventario (int). Mediante un Menú interactivo continuo, debe permitir: 1) Guardar nuevo recurso recolectado en la zona segura, 2) Listar inventario táctico completo, 3) Buscar suministro por nombre para consultar existencias, 4) Actualizar unidades tras disparar o consumir raciones, 5) Eliminar ítem descartado o consumido totalmente, 6) Reportes de Alerta HUD (filtrar recursos por debajo del umbral de emergencia < 5 unidades y total de provisiones), y 7) Salir.
vector<string> suministros | vector<int> cantidadesvoid menu() -> Menú de supervivencia tácticavoid guardarRecurso(vector<string>& sum, vector<int>& cant) -> Registro de munición/botiquínvoid listarMochila(const vector<string>& sum, const vector<int>& cant) -> Vista de inventario tácticoint buscarRecurso(const vector<string>& sum, const string& target) -> Búsqueda por nombrevoid actualizarUnidades(vector<int>& cant) -> Modificación de cantidad en mochilavoid eliminarRecurso(vector<string>& sum, vector<int>& cant) -> Descarte de ítem en ambos vectoresvoid reporteAlertasHUD(const vector<string>& sum, const vector<int>& cant, int minVal) -> Alerta de peligro < 5u9. Domador de Criaturas RPG: Bestiario, Afinidades Elementales y Capturas
Construir el bestiario de un domador con tres vectores paralelos: nombres de criaturas (string), elemento afin (string) y poder de combate CP (float). Con un Menú de opciones interactivo, debe permitir: 1) Guardar/Capturar criatura registrando sus 3 atributos, 2) Listar bestiario completo con índices y estadísticas, 3) Buscar criatura por nombre para ver su elemento y poder CP, 4) Actualizar poder CP tras entrenamiento, 5) Eliminar/Liberar criatura a su hábitat salvaje en los 3 vectores a la vez, 6) Reportes elementales (criatura con mayor CP y cantidad de criaturas por elemento), y 7) Salir.
vector<string> nombres | vector<string> elementos | vector<float> poderCPvoid menu() -> Menú del domador de monstruosvoid guardarCriatura(vector<string>& nom, vector<string>& ele, vector<float>& cp) -> Captura y registrovoid listarBestiario(const vector<string>& nom, const vector<string>& ele, const vector<float>& cp) -> Despliegue de criaturasint buscarCriatura(const vector<string>& nom, const string& target) -> Búsqueda por especie/nombrevoid actualizarPoderCP(vector<float>& cp) -> Subida de poder de combate tras batallavoid eliminarCriatura(vector<string>& nom, vector<string>& ele, vector<float>& cp) -> Liberación atómica triplevoid reporteCriaturaMaxCP(const vector<string>& nom, const vector<string>& ele, const vector<float>& cp) -> Criatura legendaria MVP10. Tienda Gacha & Pase de Batalla: Catálogo de Skins, Canjes y Auditoría
Diseñar el backend de la tienda de skins y pases de batalla con tres vectores paralelos: nombres de skins cosméticas (string), unidades en stock (int) y costo en gemas virtuales (float). A través de un Menú interactivo, debe permitir: 1) Guardar nueva skin de temporada, 2) Listar catálogo de cosméticos con stock y precios, 3) Buscar skin por nombre para consultar detalles de canje, 4) Actualizar precio o stock tras reabastecimiento o compra, 5) Eliminar skin retirada de la tienda, 6) Reportes económicos (recaudación potencial en gemas, skins agotadas y skin legendaria más costosa), y 7) Salir.
vector<string> skins | vector<int> stockSkins | vector<float> costosGemasvoid menu() -> Menú de la tienda de skins y pasesvoid guardarSkin(vector<string>& s, vector<int>& stock, vector<float>& cost) -> Alta de nuevo cosméticovoid listarTienda(const vector<string>& s, const vector<int>& stock, const vector<float>& cost) -> Catálogo de temporadaint buscarSkin(const vector<string>& s, const string& target) -> Búsqueda por nombre de skinvoid actualizarSkin(vector<int>& stock, vector<float>& cost) -> Ajuste de precio o stockvoid eliminarSkin(vector<string>& s, vector<int>& stock, vector<float>& cost) -> Retiro de catálogo triplevoid reporteRecaudacionGemas(const vector<string>& s, const vector<int>& stock, const vector<float>& cost) -> Auditoría de gemas11. Tienda de Pociones: Almacén Alquímico, Stock y Precios
"En los confines de Eldoria, regentas la legendaria botica "Elixir & Destilados". Brujos, cazadores de monstruos y paladines se agolpan antes de cada incursión a las mazmorras. El gremio de alquimistas exige un control riguroso de cada frasco en estantería: registrar su nombre, el stock disponible y su valor en monedas de oro. Un descuido en el stock dejará a los héroes sin salvación ante el dragón, y un error en el balance llevará a la botica a la quiebra."
Construir una aplicación de consola basada en un Menú interactivo continuo (do-while/while). El sistema administra tres vectores paralelos: nombres de las pociones (vector<string>), cantidades en stock (vector<int>) y precios en monedas de oro (vector<float>). Debe implementar obligatoriamente las 6 operaciones fundamentales de evaluación técnica: 1) Guardar nueva poción en los tres vectores, 2) Listar catálogo completo con índices y precios, 3) Buscar poción por nombre retornando su posición exacta o -1, 4) Actualizar stock o precio por índice validando límites, 5) Eliminar poción agotada o descontinuada simultáneamente en los 3 vectores, 6) Reportes estadísticos de botica (poción más cara, menor stock, valor total de bodega y alerta de stock crítico < 5 frascos), y 7) Salir.
vector<string> nombres | vector<int> cantidades | vector<float> preciosvoid menu() -> Menú interactivo continuo con opciones 1 a 7void guardarPocion(vector<string>& nom, vector<int>& cant, vector<float>& pre) -> Registro simultáneovoid listarPociones(const vector<string>& nom, const vector<int>& cant, const vector<float>& pre) -> Formato [i]int buscarPocion(const vector<string>& nom, const string& buscada) -> Búsqueda lineal (retorna i o -1)void actualizarPocion(vector<int>& cant, vector<float>& pre) -> Validación de límites 0 <= idx < sizevoid eliminarPocion(vector<string>& nom, vector<int>& cant, vector<float>& pre) -> erase() sincronizadovoid reportesPociones(const vector<string>& nom, const vector<int>& cant, const vector<float>& pre) -> Auditoría12. Arena de Gladiadores: Salud, Ataque y Triaje de Sangre
"Bajo el sol abrasador del Coliseo de Sangre, la multitud ruge esperando el torneo imperial. Como Lanista en jefe del Ludus de la Arena, tu vida y reputación dependen del estado físico de tus luchadores. Antes de cada combate a muerte contra fieras y campeones rivales, debes supervisar tres atributos vitales: el nombre del gladiador, sus puntos de salud actuales (HP) y su potencia de ataque físico (ATK). Un guerrero herido enviado a la arena morirá en vano; un campeón letal ganará la gloria del César."
Construir el sistema de mando del cuartel de gladiadores mediante un Menú interactivo. Opera con tres vectores paralelos: nombres de los guerreros (vector<string>), vida o salud actual (vector<int>) y poder de ataque físico (vector<int>). Debe permitir: 1) Reclutar nuevo gladiador en los 3 vectores, 2) Listar escuadrón completo con barra de estado, 3) Buscar combatiente por nombre para diagnóstico previo a la batalla, 4) Actualizar vida tras recibir heridas o curaciones, y actualizar ataque tras entrenamiento con armas, 5) Eliminar gladiador caído en combate o que ha comprado su libertad, 6) Reportes de Arena (campeón supremo con mayor ataque, luchador más vulnerable con menor vida, promedio de ataque del ludus y triaje crítico HP < 30), y 7) Salir.
vector<string> nombres | vector<int> vidas | vector<int> ataquesvoid menu() -> Bucle de opciones del cuartel de combatevoid guardarGladiador(vector<string>& nom, vector<int>& vid, vector<int>& atk) -> Alta de luchadorvoid listarGladiadores(const vector<string>& nom, const vector<int>& vid, const vector<int>& atk) -> Despliegue de escuadrónint buscarGladiador(const vector<string>& nom, const string& target) -> Búsqueda por nombre de guerravoid actualizarGladiador(vector<int>& vid, vector<int>& atk) -> Modificación de salud y podervoid eliminarGladiador(vector<string>& nom, vector<int>& vid, vector<int>& atk) -> Baja en los 3 vectoresvoid reportesGladiadores(const vector<string>& nom, const vector<int>& vid, const vector<int>& atk) -> Triaje de combate13. Gran Premio de Autos: Pilotos, Escuderías y Telemetría
"Es la noche del Gran Premio de Neón en el circuito urbano de Cyber-Metrópolis. La lluvia resbala sobre el asfalto reflectante mientras los motores V6 híbridos rugen en el pit lane. Como Ingeniero Jefe de Telemetría en el muro de boxes, los sensores instalados en las curvas y rectas de 340 km/h transmiten datos en tiempo real a tu consola. Tienes a tu cargo tres vectores sincronizados: el nombre del piloto, la escudería o modelo de auto y la velocidad punta registrada. Una calibración errónea en pits puede causar un choque contra el muro."
Desarrollar el software de telemetría para el control de la carrera con tres vectores paralelos: nombres de los pilotos (vector<string>), modelos/escuderías de autos (vector<string>) y velocidades máximas en km/h (vector<int>). A través de un Menú interactivo continuo, debe soportar: 1) Inscribir bólido en la parrilla con sus 3 datos, 2) Listar la parrilla de salida con posiciones, escuderías y velocidades, 3) Buscar piloto por nombre retornando su lugar en boxes y marca de velocidad, 4) Actualizar velocidad punta tras calibración aerodinámica en boxes, 5) Eliminar bólido por descalificación técnica o retiro mecánico, 6) Reportes de Telemetría (Pole Position con mayor velocidad, bólido con menor velocidad, promedio general de velocidad y bólidos de élite >= 340 km/h), y 7) Salir.
vector<string> pilotos | vector<string> autos | vector<int> velocidadesvoid menu() -> Menú de la consola de telemetría en boxesvoid guardarAuto(vector<string>& pil, vector<string>& aut, vector<int>& vel) -> Ingreso a parrillavoid listarAutos(const vector<string>& pil, const vector<string>& aut, const vector<int>& vel) -> Telemetría de parrillaint buscarPiloto(const vector<string>& pil, const string& buscado) -> Búsqueda por nombre de pilotovoid actualizarVelocidad(vector<int>& vel) -> Ajuste de velocidad puntavoid eliminarAuto(vector<string>& pil, vector<string>& aut, vector<int>& vel) -> Baja simultáneavoid reportesCarrera(const vector<string>& pil, const vector<string>& aut, const vector<int>& vel) -> Récords y promedios14. Bestiario Arcano: Criaturas Míticas, Tipos y Niveles
"En las tierras sombrías del continente, criaturas ancestrales despiertan de su letargo en bosques prohibidos y simas volcánicas. Los guardianes del Círculo del Lobo recorren las aldeas protegiendo a los campesinos de garras y alientos de fuego. Como Archivero Supremo de la Fortaleza Arcano, tu sagrada encomienda es compilar el Bestiario de Monstruos. Cada espécimen registrado se almacena en tres vectores paralelos: el nombre de la bestia, su tipo o afinidad mágica (Dragón, No-Muerto, Bestia, Elemental) y su nivel de amenaza de combate. Un novato que enfrente a un dragón nivel 70 pensando que es nivel 5 no vivirá para contarlo."
Crear el sistema de gestión del bestiario mediante un Menú de consola interactivo. Opera con tres vectores paralelos: nombres de las criaturas (vector<string>), tipo o elemento (vector<string>) y nivel de combate (vector<int>). Debe permitir: 1) Guardar nueva criatura descubierta en los tres vectores, 2) Listar bestiario completo con formato de códice, 3) Buscar criatura por nombre verificando si ya existe en el registro, 4) Actualizar nivel de peligro si la criatura muta o absorbe magia, 5) Eliminar criatura si la especie se extingue o fue purificada, 6) Reportes del Códice (jefe alfa legendario con nivel máximo, promedio general de amenaza y listado de amenazas de rango extremo nivel >= 50), y 7) Salir.
vector<string> nombres | vector<string> tipos | vector<int> nivelesvoid menu() -> Menú del Códice Arcanovoid guardarCriatura(vector<string>& nom, vector<string>& tip, vector<int>& niv) -> Asentar avistamientovoid listarBestiario(const vector<string>& nom, const vector<string>& tip, const vector<int>& niv) -> Catálogo de bestiasint buscarCriatura(const vector<string>& nom, const string& target) -> Búsqueda por nombre de especievoid actualizarNivel(vector<int>& niv) -> Subida de nivel por mutación mágicavoid eliminarCriatura(vector<string>& nom, vector<string>& tip, vector<int>& niv) -> Borrado sincronizado triplevoid reportesBestiario(const vector<string>& nom, const vector<string>& tip, const vector<int>& niv) -> Auditoría de peligro15. Hangar Espacial: Naves, Combustible Warp y Velocidad
"En el Sector Gamma del cosmos profundo, la estación estelar Orión-Prime orbita alrededor de una anomalía gravitacional. Cazas estelares, cruceros de asalto y fragatas de reconocimiento entran y salen constantemente de las esclusas presurizadas. Como Oficial de Despacho y Bahías de Atraque, tienes a tu cargo tres parámetros críticos en memoria: el nombre o código de la nave, su nivel de combustible de plasma (%) y su velocidad de crucero warp (km/s). Si autorizas el despegue de una nave con combustible insuficiente, quedará a la deriva para siempre en el vacío interestelar."
Modelar el software de consola para la torre de control espacial con tres vectores paralelos: nombres o códigos de nave (vector<string>), porcentaje de combustible de plasma (vector<float>) y velocidad warp en km/s (vector<int>). Con un Menú interactivo continuo, debe soportar: 1) Acoplar nueva nave en una bahía del hangar, 2) Listar estado general de la flota estelar con sus métricas, 3) Buscar nave por código o nombre táctico, 4) Actualizar porcentaje de combustible tras reabastecimiento en la bahía o patrulla, 5) Eliminar nave despegada en misión o desguazada, 6) Reportes de la Armada Estelar (crucero más veloz, nave con menor combustible, promedio de plasma de la flota y alerta de naves en riesgo crítico < 25%), y 7) Salir.
vector<string> nombres | vector<float> combustibles | vector<int> velocidadesvoid menu() -> Menú de la torre de despacho espacialvoid guardarNave(vector<string>& nom, vector<float>& com, vector<int>& vel) -> Acoplamiento en bahíavoid listarFlota(const vector<string>& nom, const vector<float>& com, const vector<int>& vel) -> Estado de hangaresint buscarNave(const vector<string>& nom, const string& buscada) -> Búsqueda por código tácticovoid actualizarCombustible(vector<float>& com) -> Recarga de plasma en bahíavoid eliminarNave(vector<string>& nom, vector<float>& com, vector<int>& vel) -> Despegue definitivo triplevoid reportesFlota(const vector<string>& nom, const vector<float>& com, const vector<int>& vel) -> Métricas espaciales16. Torneo de Fútbol: Tabla de Posiciones, Goles y Puntos
"El estadio ruge con 80,000 aficionados coreando los himnos de sus clubes. Se disputa la última fecha del Torneo Continental de Fútbol, donde cada pase y disparo a portería define al campeón y a los equipos clasificados a copas internacionales. Como Director del Centro de Cómputos y Estadísticas de la Liga, eres el responsable oficial del sistema de tabla general. Administras tres vectores paralelos sincronizados: el nombre del club, los goles a favor anotados (GF) y los puntos acumulados (PTS). La prensa, hinchas y dirigentes esperan tus reportes oficiales."
Implementar el sistema administrativo del torneo con tres vectores paralelos: nombres de los clubes (vector<string>), goles a favor acumulados (vector<int>) y puntos en la tabla (vector<int>). A través de un Menú interactivo continuo, debe permitir: 1) Inscribir equipo en la liga con sus estadísticas iniciales, 2) Listar tabla de posiciones general ordenada con formato de liga, 3) Buscar equipo por nombre para consultar su posición y saldo de goles, 4) Actualizar goles y puntos tras disputarse un partido (victoria: +3 pts, empate: +1 pto, derrota: +0 pts), 5) Eliminar equipo descalificado por sanciones disciplinarias, 6) Reportes del Campeonato (equipo puntero o campeón con mayor puntaje, bota de oro colectiva con más goles, total de goles del torneo y promedio de goles por club), y 7) Salir.
vector<string> equipos | vector<int> goles | vector<int> puntosvoid menu() -> Menú administrativo de la liga de fútbolvoid guardarEquipo(vector<string>& eq, vector<int>& gol, vector<int>& pts) -> Inscripción oficialvoid listarTabla(const vector<string>& eq, const vector<int>& gol, const vector<int>& pts) -> Tabla de posicionesint buscarEquipo(const vector<string>& eq, const string& target) -> Búsqueda por nombre de clubvoid actualizarPuntosGoles(vector<int>& gol, vector<int>& pts) -> Registro de resultado de partidovoid eliminarEquipo(vector<string>& eq, vector<int>& gol, vector<int>& pts) -> Descalificación en 3 vectoresvoid reportesCampeonato(const vector<string>& eq, const vector<int>& gol, const vector<int>& pts) -> Auditoría de liga