include <iostream>
#include <iomanip>
#include <string>
using namespace std;
const int NUM_ALUMNOS = 50;
// Estructura para almacenar los datos de un alumno
struct Alumno {
string nombre;
string cedula;
float son datos ;
float notaMatematicas#;
float notaFisica;
float promedio;
};
// Funciones prototypes
void cargarDatos(Alumno alumnos[], int n);
void mostrarTabla(const Alumno alumnos[], int n);
void ordenarPorPromedio(Alumno alumnos[], int n);
void buscarPorCedula(const Alumno alumnos[], int n);
void mostrarMejorAlumno(const Alumno alumnos[], int n);
int main() {
Alumno alumnos[NUM_ALUMNOS];
int cantidad = 0; // Para registrar cuántos alumnos se han cargado
int opcion;
do {
cout << "\nMenu:\n";
cout << "1) Cargar en forma de tabla
";
cout << "2) Ordenar de forma ascendente por promedio
";
cout << "3) Mostrar datos de un alumno por cedula
";
cout << "4) Mostrar el estudiante con mayor promedio
";
cout << "5) Mostrar toda la tabla
";
cout << "6) Salir
";
cout << "Seleccione una opcion: ";
cin >> opcion;
switch(opcion) {
case 1:
if (cantidad == 0) {
cargarDatos(alumnos, NUM_ALUMNOS);
cantidad = NUM_ALUMNOS;
} else {
cout << "Los datos ya han sido cargados.\n";
break;
case 2:
if (cantidad > 0)
ordenarPorPromedio(alumnos, cantidad);
else
cout << "Por favor cargue los datos primero.\n";
break;
case 3:
if (cantidad > 0)
buscarPorCedula(alumnos, cantidad);
else
cout << "Por favor cargue los datos primero.\n";
break;
case 4:
if (cantidad > 0)
mostrarMejorAlumno(alumnos, cantidad);
else
cout << "Por favor cargue los datos primero.\n";
break;
case 5:
if (cantidad > 0)
mostrarTabla(alumnos, cantidad);
else
cout << "Por favor cargue los datos primero.\n";
break;
case 6:
cout << "Saliendo...\n";
break;
default:
cout << "Opcion invalida. Intente nuevamente.\n";
} while (opcion != 6);
return 0;
}
// Función para cargar datos de los alumnos
void cargarDatos(Alumno alumnos[], int n) {
cout << "Cargando datos de " << n << " alumnos.\n";
for (int i = 0; i < n; i++) {
cout << "\nAlumno " << i + 1 << ":\n";
cout << "Nombre: ";
[Link](); // Para limpiar el buffer
getline(cin, alumnos[i].nombre);
cout << "Cedula: ";
getline(cin, alumnos[i].cedula);
cout << "Nota de Computacion: ";
cin >> alumnos[i].notaComputacion;
cout << "Nota de Matematicas: ";
cin >> alumnos[i].notaMatematicas;
cout << "Nota de Fisica: ";
cin >> alumnos[i].notaFisica;
// Calcular promedio
alumnos[i].promedio = (alumnos[i].notaComputacion + alumnos[i].notaMatematicas +
alumnos[i].notaFisica) / 3.0;
// Función para mostrar toda la tabla
void mostrarTabla(const Alumno alumnos[], int n) {
cout << "\n" << setw(15) << "Nombre" << setw(12) << "Cedula"
<< setw(12) << "Computacion" << setw(12) << "Matematicas" << setw(12) << "Fisica" <<
setw(10) << "Promedio" << "\n";
for (int i = 0; i < n; i++) {
cout << setw(15) << alumnos[i].nombre
<< setw(12) << alumnos[i].cedula
<< setw(12) << alumnos[i].notaComputacion
<< setw(12) << alumnos[i].notaMatematicas
<< setw(12) << alumnos[i].notaFisica
<< setw(10) << fixed << setprecision(2) << alumnos[i].promedio
<< "\n";
// Función para ordenar por promedio en forma ascendente
void ordenarPorPromedio(Alumno alumnos[], int n) {
for (int i = 0; i < n -1; i++) {
for (int j = 0; j < n - i -1; j++) {
if (alumnos[j].promedio > alumnos[j+1].promedio) {
swap(alumnos[j], alumnos[j+1]);
cout << "Tabla ordenada por promedio en forma ascendente.\n";
// Función para buscar alumno por cedula
void buscarPorCedula(const Alumno alumnos[], int n) {
string cedulaBuscada;
cout << "Ingrese la cedula del alumno a buscar: ";
[Link]();
getline(cin, cedulaBuscada);
bool encontrado = false;
for (int i = 0; i < n; i++) {
if (alumnos[i].cedula == cedulaBuscada) {
cout << "\nDatos del alumno:\n";
cout << "Nombre: " << alumnos[i].nombre << "\n";
cout << "Cedula: " << alumnos[i].cedula << "\n";
cout << "Nota de Computacion: " << alumnos[i].notaComputacion << "\n";
cout << "Nota de Matematicas: " << alumnos[i].notaMatematicas << "\n";
cout << "Nota de Fisica: " << alumnos[i].notaFisica << "\n";
cout << "Promedio: " << fixed << setprecision(2) << alumnos[i].promedio << "\n";
encontrado = true;
break;
if (!encontrado)
cout << "Alumno con cedula " << cedulaBuscada << " no encontrado.\n";
// Función para mostrar el alumno con mayor promedio
void mostrarMejorAlumno(const Alumno alumnos[], int n) {
if (n == 0) {
cout << "No hay datos cargados.\n";
return;
int indexMax = 0;
for (int i = 1; i < n; i++) {
if (alumnos[i].promedio > alumnos[indexMax].promedio) {
indexMax = i;
cout << "\nAlumno con mayor promedio:\n";
cout << "Nombre: " << alumnos[indexMax].nombre << "\n";
cout << "Cedula: " << alumnos[indexMax].cedula << "\n";
cout << "Nota de Computacion: " << alumnos[indexMax].notaComputacion << "\n";
cout << "Nota de Matematicas: " << alumnos[indexMax].notaMatematicas << "\n";
cout << "Nota de Fisica: " << alumnos[indexMax].notaFisica << "\n";
cout << "Promedio: " << fixed << setprecision(2) << alumnos[indexMax].promedio << "\n";