#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// ==== FUNCIONES COMUNES ====
void mostrarMenu();
void esperar();
vector<int> sumarVectores(const vector<int>& v1, const vector<int>& v2);
void imprimirVector(const vector<int>& v);
int posicionMayor(const vector<int>& v);
// ==== EVALUACION 1 ====
void evaluacion1() {
cout << "\n--- EVALUACION 1 ---\n";
int n;
vector<int> vector1, vector2;
cout << "Ingrese el tamano de los vectores: ";
cin >> n;
cout << "Ingrese los elementos del primer vector:\n";
for (int i = 0; i < n; ++i) {
int val;
cin >> val;
vector1.push_back(val);
cout << "Ingrese los elementos del segundo vector:\n";
for (int i = 0; i < n; ++i) {
int val;
cin >> val;
vector2.push_back(val);
vector<int> suma = sumarVectores(vector1, vector2);
cout << "\n4) Resultado de la suma de los dos vectores introducidos:\n";
imprimirVector(suma);
vector<int> sumaDesc = suma;
sort(sumaDesc.begin(), sumaDesc.end(), greater<int>());
cout << "\n1) Vector resultado de la suma ordenado de forma descendente:\n";
imprimirVector(sumaDesc);
cout << "\n2) Vector resultado de la suma:\n";
imprimirVector(suma);
int posMayor = posicionMayor(suma);
cout << "El número mayor está en la posición: " << posMayor << endl;
vector<int> sumaAsc = suma;
sort(sumaAsc.begin(), sumaAsc.end());
cout << "\n3) Vector resultado de la suma ordenado de forma ascendente:\n";
imprimirVector(sumaAsc);
string respuesta;
cout << "\n¿DESEA HACER OTRA OPERACIÓN? (SI/NO): ";
cin >> respuesta;
if (respuesta == "SI" || respuesta == "Si" || respuesta == "si") {
cout << "NO HABIA MAS PRESUPUESTO\n";
} else {
cout << "INTENTE OTRA VEZ\n";
esperar();
// ==== FUNCIONES AUXILIARES EVAL 1 ====
vector<int> sumarVectores(const vector<int>& v1, const vector<int>& v2) {
vector<int> resultado;
for (size_t i = 0; i < v1.size(); ++i) {
resultado.push_back(v1[i] + v2[i]);
return resultado;
void imprimirVector(const vector<int>& v) {
for (size_t i = 0; i < v.size(); ++i)
cout << v[i] << " ";
cout << endl;
int posicionMayor(const vector<int>& v) {
int maxVal = v[0];
int pos = 0;
for (size_t i = 1; i < v.size(); ++i) {
if (v[i] > maxVal) {
maxVal = v[i];
pos = i;
}
return pos + 1;
// ==== EVALUACION 2 ====
void mostrarSeparador(string mensaje) {
cout << "\n=== " << mensaje << " ===\n";
void mostrarMatriz(int** matriz, int filas, int columnas) {
for (int i = 0; i < filas; ++i) {
for (int j = 0; j < columnas; ++j) {
cout << matriz[i][j] << "\t";
cout << endl;
void evaluacion2() {
cout << "\n--- EVALUACION 2 ---\n";
int filas, columnas;
cout << "‹ Hola profe por acá Misael Hernandez C.I: 30.887.469\n";
cout << "Introduce el tamano de la matriz:\n";
cout << "Numero de filas: ";
cin >> filas;
cout << "Numero de columnas: ";
cin >> columnas;
int** matriz = new int*[filas];
for (int i = 0; i < filas; ++i)
matriz[i] = new int[columnas];
mostrarSeparador("Introduce los valores desordenados");
for (int i = 0; i < filas; ++i)
for (int j = 0; j < columnas; ++j) {
cout << "Elemento [" << i << "][" << j << "]: ";
cin >> matriz[i][j];
mostrarSeparador("Matriz Desordenada");
mostrarMatriz(matriz, filas, columnas);
int total = filas * columnas;
int* temporal = new int[total];
int index = 0;
for (int i = 0; i < filas; ++i)
for (int j = 0; j < columnas; ++j)
temporal[index++] = matriz[i][j];
bool intercambiado;
do {
intercambiado = false;
for (int i = 0; i < total - 1; ++i) {
if (temporal[i] > temporal[i + 1]) {
int aux = temporal[i];
temporal[i] = temporal[i + 1];
temporal[i + 1] = aux;
intercambiado = true;
} while (intercambiado);
index = 0;
for (int i = 0; i < filas; ++i)
for (int j = 0; j < columnas; ++j)
matriz[i][j] = temporal[index++];
mostrarSeparador("Matriz Ordenada Ascendentemente");
mostrarMatriz(matriz, filas, columnas);
for (int i = 0; i < filas; ++i)
delete[] matriz[i];
delete[] matriz;
delete[] temporal;
cout << "\n¡Listo! La matriz ha sido ordenada exitosamente.\n";
cout << "Gracias por usar Mi Ordenadora de matrices –\n";
esperar();
// ==== FUNCION ESPERA ====
void esperar() {
int opcion;
cout << "\n1. Volver al menu principal\n";
cout << "2. Terminar el programa\n";
cout << "Seleccione una opcion: ";
cin >> opcion;
if (opcion == 2) {
cout << "Programa finalizado. Gracias por usarlo.\n";
exit(0);
}
// ==== EVALUACION 3 ====
void llenarMatriz(int** matriz, int filas, int columnas) {
for (int i = 0; i < filas; ++i)
for (int j = 0; j < columnas; ++j) {
cout << "Elemento [" << i << "][" << j << "]: ";
cin >> matriz[i][j];
void ordenarMatriz(int** matriz, int filas, int columnas) {
int total = filas * columnas;
int* temp = new int[total];
int index = 0;
for (int i = 0; i < filas; ++i)
for (int j = 0; j < columnas; ++j)
temp[index++] = matriz[i][j];
bool intercambiado;
do {
intercambiado = false;
for (int i = 0; i < total - 1; ++i) {
if (temp[i] > temp[i + 1]) {
int aux = temp[i];
temp[i] = temp[i + 1];
temp[i + 1] = aux;
intercambiado = true;
} while (intercambiado);
index = 0;
for (int i = 0; i < filas; ++i)
for (int j = 0; j < columnas; ++j)
matriz[i][j] = temp[index++];
delete[] temp;
void liberarMatriz(int** matriz, int filas) {
for (int i = 0; i < filas; ++i)
delete[] matriz[i];
delete[] matriz;
void evaluacion3() {
cout << "\n--- EVALUACION 3 ---\n";
int filas, columnas;
cout << "‹ Hola profe por aca¡ Misael hernandez C.I:30.887.469\n";
cout << "Introduce el tamaño de la matriz:\n";
cout << "Numero de filas: ";
cin >> filas;
cout << "Numero de columnas: ";
cin >> columnas;
int** matriz = new int*[filas];
for (int i = 0; i < filas; ++i)
matriz[i] = new int[columnas];
mostrarSeparador("Introduce los valores desordenados");
llenarMatriz(matriz, filas, columnas);
mostrarSeparador("Matriz Desordenada");
mostrarMatriz(matriz, filas, columnas);
ordenarMatriz(matriz, filas, columnas);
mostrarSeparador("Matriz Ordenada Ascendentemente");
mostrarMatriz(matriz, filas, columnas);
liberarMatriz(matriz, filas);
cout << "\n ¡Listo! La matriz ha sido ordenada exitosamente.\n";
cout << "Gracias por usar Mi Ordenadora de matrices –\n";
esperar();
// ==== EVALUACION 4 ====
struct Ficha {
int lado1;
int lado2;
};
void mostrarFicha(Ficha f) {
cout << "[" << f.lado1 << "|" << f.lado2 << "]";
}
void mostrarFichas(const vector<Ficha>& fichas) {
for (size_t i = 0; i < fichas.size(); ++i) {
cout << i + 1 << ". ";
mostrarFicha(fichas[i]);
cout << endl;
void evaluacion4() {
cout << "\n--- EVALUACION 4 ---\n";
cout << "Hola profe por aca ¡ Misael Hernandez C.I: 30.887.469" << endl;
cout << "------------------------------------------------------" << endl;
char iniciar;
cout << "Presione SI para comenzar el programa: ";
cin >> iniciar;
if (iniciar != 'S' && iniciar != 's') {
cout << "Programa finalizado. ¡Hasta luego!" << endl;
return;
vector<Ficha> mano = {
{6, 5}, {2, 4}, {1, 1}, {0, 3}, {3, 6}, {0, 0}, {2, 5}
};
cout << "\nTus fichas son:" << endl;
mostrarFichas(mano);
int eleccion;
cout << "\nIngrese el numero de la ficha que desea lanzar (1 a " << mano.size() << "): ";
cin >> eleccion;
if (eleccion < 1 || eleccion > (int)mano.size()) {
cout << "Seleccion invalida. Terminando programa." << endl;
return;
Ficha jugada = mano[eleccion - 1];
cout << "\nFicha jugada: ";
mostrarFicha(jugada);
cout << endl;
cout << "Fichas restantes en la mano: ";
for (size_t i = 0; i < mano.size(); ++i) {
if (i != (size_t)(eleccion - 1)) {
mostrarFicha(mano[i]);
cout << " ";
cout << endl;
cout << "\nGracias por jugar su ficha profesor" << endl;
// Ajustar menu y main para incluir eval 3 y 4
int main() {
int opcion;
do {
mostrarMenu();
cin >> opcion;
switch (opcion) {
case 1: evaluacion1(); break;
case 2: evaluacion2(); break;
case 3: evaluacion3(); break;
case 4: evaluacion4(); break;
default: cout << "Opcion invalida. Intente nuevamente.\n";
} while (opcion != 5);
return 0;
void mostrarMenu() {
cout << "\n======= MENU DE EVALUACIONES MISAEL =======\n";
cout << "1. Evaluacion 1 (Vectores)\n";
cout << "2. Evaluacion 2 (Matriz)\n";
cout << "3. Evaluacion 3 (Matriz modular)\n";
cout << "4. Evaluacion 4 (Domino)\n";
cout << "5. Salir\n";
cout << "Seleccione una opcion: ";