Ejercicio 1
#include <iostream>
#include <string>
using namespace std;
struct Producto {
string tipo;
string marca;
float precio;
};
void ordenarProductos(Producto productos[], int numProductos) {
for (int i = 0; i < numProductos - 1; ++i) {
for (int j = 0; j < numProductos - i - 1; ++j) {
if (productos[j].precio > productos[j + 1].precio) {
Producto temp = productos[j];
productos[j] = productos[j + 1];
productos[j + 1] = temp;
void mostrarProductosPorTipo(Producto productos[], int numProductos, string tipo) {
cout << "Productos de tipo " << tipo << ":" << endl;
for (int i = 0; i < numProductos; ++i) {
if (productos[i].tipo == tipo) {
cout << "Tipo: " << productos[i].tipo << ", Marca: " << productos[i].marca << ", Precio: " <<
productos[i].precio << endl;
int main() {
int opcion;
const int numProductos = 30;
Producto productos[numProductos] = {
// Laptops
{"Laptop", "HP", 3500.0},
{"Laptop", "DELL", 6500.0},
{"Laptop", "Lenovo", 4500.0},
{"Laptop", "Asus", 4000.0},
{"Laptop", "HP", 5000.0},
{"Laptop", "APPLE", 25000.0},
{"Laptop", "ACER ", 75000.0},
{"Laptop", "SAMSUNG", 6600.0},
{"Laptop", "DELL", 2200.0},
{"Laptop", "APPLE", 24000.0},
// Impresoras
{"Impresora", "EPSON", 1000.0},
{"Impresora", "HP", 450.0},
{"Impresora", "CANON", 1500.0}, {
"Impresora", "EPSON", 350.0},
{"Impresora", "BROTHER", 600.0},
{"Impresora", "CANON", 2900.0},
{"Impresora", "DELL", 1200.0},
{"Impresora", "DELL", 190.0},
{"Impresora", "SANSUNG", 2000.0},
{"Impresora", "DELL", 2300.0},
// Tel�fonos
{"Telefono", "HONOR 70", 3500.0},
{"Telefono", "APPLE", 8500.0},
{"Telefono", "XIAMI", 1100.0},
{"Telefono", "LG", 3200.0}, {
"Telefono", "MOTOROLA", 900.0},
{"Telefono", "SANSUNG", 4500.0},
{"Telefono", "OPPO", 1500.0},
{"Telefono", "HUAEWI", 1900.0},
{"Telefono", "HONOR", 5200.0},
{"Telefono", "BLACKBERRY", 700.0}
};
ordenarProductos(productos, numProductos);
do {
cout << "\nMenu:\n1. Mostrar Laptops\n2. Mostrar Impresoras\n3. Mostrar Telefonos\n4.
Salir\nSeleccione una opcion: ";
cin >> opcion;
switch (opcion) {
case 1:
mostrarProductosPorTipo(productos, numProductos, "Laptop");
break;
case 2:
mostrarProductosPorTipo(productos, numProductos, "Impresora");
break;
case 3:
mostrarProductosPorTipo(productos, numProductos, "Telefono");
break;
case 4:
cout << "Saliendo del programa." << endl;
break;
default:
cout << "Opcion invalida. Por favor, seleccione una opcion valida." << endl;
} while (opcion != 4);
return 0;
}
Ejercicio 2
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Estudiante {
string nombre;
int grado;
float nota1Parcial;
float nota2Parcial;
float notaFinal;
};
bool compararNotas(const Estudiante &a, const Estudiante &b) {
return a.notaFinal > b.notaFinal;
void mostrarEstudiantesPorGrado(const Estudiante alumnos[], int numAlumnos, int
gradoSeleccionado) {
cout << "\nListado de alumnos del grado " << gradoSeleccionado << ":\n";
bool encontrado = false;
for (int i = 0; i < numAlumnos; ++i) {
if (alumnos[i].grado == gradoSeleccionado) {
encontrado = true;
cout << "Nombre: " << alumnos[i].nombre << ", Nota Final: " << alumnos[i].notaFinal <<
endl;
}
if (!encontrado) {
cout << "No hay alumnos registrados en el grado " << gradoSeleccionado << endl;
void buscarEstudiantePorGradoYNota(const Estudiante alumnos[], int numAlumnos) {
int gradoBuscado;
cout << "Ingrese el grado del estudiante que desea buscar: ";
cin >> gradoBuscado;
float notaBuscada;
cout << "Ingrese la nota del estudiante que desea buscar: ";
cin >> notaBuscada;
bool encontrado = false;
cout << "\nEstudiantes encontrados para el grado " << gradoBuscado << " y nota " <<
notaBuscada << ":\n";
for (int i = 0; i < numAlumnos; ++i) {
if (alumnos[i].grado == gradoBuscado && alumnos[i].notaFinal == notaBuscada) {
encontrado = true;
cout << "Nombre: " << alumnos[i].nombre << ", Nota Final: " << alumnos[i].notaFinal <<
endl;
if (!encontrado) {
cout << "No se encontraron estudiantes para el grado " << gradoBuscado << " y nota " <<
notaBuscada << endl;
}
int main() {
const int numAlumnos = 30;
Estudiante alumnos[numAlumnos] = {
{"Juan", 1, 15, 20, 30},
{"Marta", 3, 18, 25, 32},
{"Andres", 3, 20, 22, 28},
{"Luis", 21, 17, 23, 31},
{"Isabella", 3, 16, 21, 29},
{"Carlos", 1, 19, 24, 30},
{"Lesly", 2, 18, 23, 29},
{"Angel", 11, 20, 25, 35},
{"Marcela", 10, 17, 22, 28},
{"Antoni", 11, 18, 23, 30},
{"Frida", 10, 19, 24, 31},
{"Emily", 11, 16, 21, 27},
{"Sandra", 10, 18, 23, 30},
{"Jose", 1, 19, 24, 32},
{"Paola", 10, 20, 25, 33},
{"Daniela", 2, 15, 20, 28},
{"Carlos", 1, 18, 23, 31},
{"katerine", 12, 19, 24, 32},
{"Pablo", 3, 16, 21, 29},
{"Nancy", 3, 17, 22, 30},
{"Luciana", 1, 19, 24, 32},
{"Adrian", 2, 18, 23, 31},
{"Martina", 2, 20, 25, 33},
{"Jose", 1, 17, 22, 29},
{"Carolina", 3, 16, 21, 28},
{"David", 1, 18, 23, 31},
{"Valeria", 1, 19, 24, 32},
{"Fernando", 2, 20, 25, 33},
{"Juliana", 3, 15, 20, 27}
};
int opcion;
cout << "Seleccione una opcion:" << endl;
cout << "1. Ver estudiantes por grado" << endl;
cout << "2. Buscar estudiante por grado y nota" << endl;
cout << "Opcion: ";
cin >> opcion;
if (opcion == 1) {
int gradoSeleccionado;
cout << "Ingrese el grado que desea ver: ";
cin >> gradoSeleccionado;
mostrarEstudiantesPorGrado(alumnos, numAlumnos, gradoSeleccionado);
} else if (opcion == 2) {
buscarEstudiantePorGradoYNota(alumnos, numAlumnos);
} else {
cout << "Opcion no valida." << endl;
return 0;