#include <iostream>
#include <windows.h>
#include <iomanip>
#include <limits>
using namespace std;
// FUNCION PARA CAMBIAR COLORES
void color(int c){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c);
// FUNCION PAUSA (CORREGIDA)
void pausa(){
color(7);
cout << "\n\nPresiona ENTER para continuar...";
[Link](numeric_limits<streamsize>::max(), '\n');
[Link]();
// TITULO PRINCIPAL
void titulo(){
color(11);
cout << "\n========================================================\n";
cout << " SISTEMA DE ALGORITMOS Y ESTRUCTURAS DE DATOS\n";
cout << "========================================================\n";
color(7);
// MENU
void menu(){
titulo();
color(14);
cout << left;
cout << setw(5) << "1." << "Programa Big O\n";
cout << setw(5) << "2." << "Ordenamiento Burbuja\n";
cout << setw(5) << "3." << "QuickSort\n";
cout << setw(5) << "4." << "Ordenamiento Insercion\n";
cout << setw(5) << "5." << "Merge Sort\n";
cout << setw(5) << "6." << "Ordenamiento Lineal\n";
cout << setw(5) << "7." << "Busqueda Secuencial\n";
cout << setw(5) << "8." << "Busqueda Binaria\n";
cout << setw(5) << "9." << "Busqueda Arbol Binario\n";
cout << setw(5) << "10." << "Arboles Optimos de Busqueda\n";
cout << setw(5) << "11." << "Arboles de Busqueda General\n";
cout << setw(5) << "12." << "Dispersion Hash\n";
cout << setw(5) << "13." << "Salir\n";
color(11);
cout << "\n========================================================\n";
color(10);
cout << "Seleccione una opcion: ";
color(7);
}
int main(){
int opcion;
do{
system("cls");
menu();
// Validación de entrada (corregida)
if (!(cin >> opcion)) {
[Link](); // limpia el estado de error
[Link](numeric_limits<streamsize>::max(), '\n');
opcion = 0; // opción inválida para repetir el ciclo
continue;
switch(opcion){
case 1:
system("cls");
titulo();
color(10);
cout << "\nPROGRAMA BIG O\n\n";
color(7);
cout << "Big O mide la complejidad de un algoritmo.\n\n";
cout << "Ejemplos:\n";
cout << "O(1) -> Tiempo constante\n";
cout << "O(n) -> Tiempo lineal\n";
cout << "O(n2) -> Tiempo cuadratico\n";
cout << "O(log n) -> Tiempo logaritmico\n";
pausa();
break;
case 2:
system("cls");
titulo();
color(10);
cout << "\nORDENAMIENTO BURBUJA\n\n";
color(7);
cout << "Metodo que compara elementos adyacentes.\n";
pausa();
break;
case 3:
system("cls");
titulo();
color(10);
cout << "\nQUICKSORT\n\n";
color(7);
cout << "Metodo rapido basado en pivotes.\n";
pausa();
break;
case 4:
system("cls");
titulo();
color(10);
cout << "\nORDENAMIENTO INSERCION\n\n";
color(7);
cout << "Inserta elementos en su posicion correcta.\n";
pausa();
break;
case 5:
system("cls");
titulo();
color(10);
cout << "\nMERGE SORT\n\n";
color(7);
cout << "Divide y combina listas ordenadas.\n";
pausa();
break;
case 6:
system("cls");
titulo();
color(10);
cout << "\nORDENAMIENTO LINEAL\n\n";
color(7);
cout << "Ordenamiento mediante recorrido secuencial.\n";
pausa();
break;
case 7:
system("cls");
titulo();
color(10);
cout << "\nBUSQUEDA SECUENCIAL\n\n";
color(7);
cout << "Busca elemento uno por uno.\n";
pausa();
break;
case 8:
system("cls");
titulo();
color(10);
cout << "\nBUSQUEDA BINARIA\n\n";
color(7);
cout << "Busca en arreglos ordenados.\n";
pausa();
break;
case 9:
system("cls");
titulo();
color(10);
cout << "\nARBOL BINARIO\n\n";
color(7);
cout << "Estructura jerarquica con nodos.\n";
pausa();
break;
case 10:
system("cls");
titulo();
color(10);
cout << "\nARBOLES OPTIMOS DE BUSQUEDA\n\n";
color(7);
cout << "Minimizan costo promedio de busqueda.\n";
pausa();
break;
case 11:
system("cls");
titulo();
color(10);
cout << "\nARBOLES DE BUSQUEDA GENERAL\n\n";
color(7);
cout << "Organizan datos de forma jerarquica.\n";
pausa();
break;
case 12:
system("cls");
titulo();
color(10);
cout << "\nDISPERSION HASH\n\n";
color(7);
cout << "Tecnica para acceder directamente a los datos mediante una funcion
hash.\n";
pausa(); // <-- CORREGIDO: faltaba la pausa
break;
case 13:
color(11);
cout << "\nSaliendo del sistema...\n";
color(7);
break;
default:
color(12);
cout << "\nOpcion no valida. Intente de nuevo.\n";
color(7);
pausa();
break;
} while(opcion != 13);
return 0;