0% encontró este documento útil (0 votos)
39 vistas10 páginas

PA2 RichardVergara

El documento presenta cuatro ejercicios de programación en C++ relacionados con estructuras de datos. Cada ejercicio incluye un menú de opciones para ingresar, mostrar y calcular datos, utilizando arreglos estáticos y dinámicos. Los temas abordan calificaciones de estudiantes, temperaturas, productos y empleados, con ejemplos de código y funcionalidades específicas.

Cargado por

19896188
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
39 vistas10 páginas

PA2 RichardVergara

El documento presenta cuatro ejercicios de programación en C++ relacionados con estructuras de datos. Cada ejercicio incluye un menú de opciones para ingresar, mostrar y calcular datos, utilizando arreglos estáticos y dinámicos. Los temas abordan calificaciones de estudiantes, temperaturas, productos y empleados, con ejemplos de código y funcionalidades específicas.

Cargado por

19896188
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

FACULTAD DE INGENIERÍA

INGENIERÍA DE SISTEMAS E
INFORMÁTICA

PRODUCTO ACADÉMICO 02

ASIGNATURA:
ESTRUCTURA DE DATOS

DOCENTE:

FELIPE OMAR ALIAGA CAVERO

INTEGRANTES:

APELLIDOS Y NOMBRES EAP

VERGARA ÑAVINCOPA, RICHARD


INGENIERÍA DE SISTEMAS E INFORMÁTICA
AUGUSTO

NRC: 23454

HUANCAYO – 2024
P á g i n a 2 | 10
Ejercicio 1: Array Estático - Calificaciones de Estudiantes (Hasta 10
Calificaciones)

Escribe un programa en C++ que almacene hasta 10 calificaciones de estudiantes en


un arreglo estático. El programa debe mostrar un menú con las opciones:

1. Ingresar Datos: Permite al usuario ingresar una calificación cada vez, hasta un
máximo de 10 calificaciones.
2. Mostrar Todos los Datos: Muestra todas las calificaciones ingresadas.
3. Calcular Promedio: Calcula y muestra el promedio de las calificaciones
ingresadas.
4. Salir: Finaliza el programa.

#include <iostream>
#include <locale.h> // Librería para configurar el idioma español
using namespace std;

const int MAX_CALIFICACIONES = 10;


int calificaciones[MAX_CALIFICACIONES];
int contador = 0; // Contador de calificaciones ingresadas

// Función para ingresar calificaciones


void ingresarDatos() {
if (contador >= MAX_CALIFICACIONES) {
cout << "No se pueden ingresar más calificaciones. El arreglo está lleno.\n";
return;
}

int calificacion;
cout << "Ingrese la calificación (0 - 20): ";
cin >> calificacion;

// Validar que la calificación esté en el rango correcto


if (calificacion >= 0 && calificacion <= 20) {
calificaciones[contador] = calificacion;
contador++;
cout << "Calificación ingresada correctamente.\n";
} else {
cout << "Calificación inválida. Debe estar entre 0 y 20.\n";
}
}

// Función para mostrar todas las calificaciones ingresadas


void mostrarDatos() {
if (contador == 0) {
cout << "No hay calificaciones ingresadas.\n";
return;
}

cout << "Calificaciones ingresadas:\n";


for (int i = 0; i < contador; i++) {
cout << "Calificación " << (i + 1) << ": " << calificaciones[i] << "\n";
}
}

// Función para calcular y mostrar el promedio de las calificaciones


void calcularPromedio() {
if (contador == 0) {
cout << "No hay calificaciones para calcular el promedio.\n";
return;
}

int suma = 0;
for (int i = 0; i < contador; i++) {
P á g i n a 3 | 10
suma += calificaciones[i];
}

float promedio = static_cast<float>(suma) / contador;


cout << "El promedio de las calificaciones es: " << promedio << "\n";
}

// Función para mostrar el menú


void mostrarMenu() {
cout << "\n--- Menú de Opciones ---\n";
cout << "1. Ingresar Datos\n";
cout << "2. Mostrar Todos los Datos\n";
cout << "3. Calcular Promedio\n";
cout << "4. Salir\n";
cout << "Seleccione una opción: ";
}

// Función principal
int main() {
setlocale(LC_ALL, "Spanish"); // Configurar idioma español
int opcion;

do {
mostrarMenu();
cin >> opcion;

switch (opcion) {
case 1:
ingresarDatos();
break;
case 2:
mostrarDatos();
break;
case 3:
calcularPromedio();
break;
case 4:
cout << "Saliendo del programa. ¡Hasta luego!\n";
break;
default:
cout << "Opción inválida. Intente de nuevo.\n";
}
} while (opcion != 4);

return 0;
}

Ejercicio 2: Array Dinámico - Ingresar Temperaturas (Sin límite de datos)

Escribe un programa en C++ que permita almacenar temperaturas en un arreglo


dinámico, sin límite de cantidad de datos. El programa debe mostrar un menú con las
siguientes opciones:

1. Ingresar Datos: Permite al usuario ingresar una nueva temperatura. Cada vez
que se ingresa una temperatura, el arreglo dinámico se redimensiona.
2. Mostrar Todos los Datos: Muestra todas las temperaturas ingresadas.
3. Calcular Temperatura Máxima y Mínima: Calcula y muestra la temperatura
más alta y la más baja ingresadas.
4. Salir: Finaliza el programa y libera la memoria.

#include <iostream>
#include <locale.h> // Librería para configurar el idioma español
using namespace std;

P á g i n a 4 | 10
// Función para ingresar datos y redimensionar el arreglo dinámico
void ingresarDatos(float *&temperaturas, int &contador) {
char respuesta;
do {
float nuevaTemperatura;
cout << "Ingrese una nueva temperatura: ";
cin >> nuevaTemperatura;

// Incrementar el tamaño del arreglo dinámico


float *temp = new float[contador + 1];
for (int i = 0; i < contador; i++) {
temp[i] = temperaturas[i];
}

// Agregar la nueva temperatura y actualizar el contador


temp[contador] = nuevaTemperatura;
contador++;

// Liberar la memoria del arreglo anterior y actualizar el puntero


delete[] temperaturas;
temperaturas = temp;

cout << "Temperatura ingresada correctamente. Total de datos ingresados: " << contador << "\n";
cout << "¿Desea ingresar otra temperatura? (s/n): ";
cin >> respuesta;
} while (respuesta == 's' || respuesta == 'S');
}

// Función para mostrar todas las temperaturas ingresadas


void mostrarDatos(float *temperaturas, int contador) {
if (contador == 0) {
cout << "No hay temperaturas ingresadas.\n";
return;
}

cout << "Temperaturas ingresadas:\n";


for (int i = 0; i < contador; i++) {
cout << "Temperatura " << (i + 1) << ": " << temperaturas[i] << "°C\n";
}
}

// Función para calcular y mostrar la temperatura máxima y mínima


void calcularMaxMin(float *temperaturas, int contador) {
if (contador == 0) {
cout << "No hay temperaturas ingresadas para calcular.\n";
return;
}

float tempMax = temperaturas[0];


float tempMin = temperaturas[0];

for (int i = 1; i < contador; i++) {


if (temperaturas[i] > tempMax) {
tempMax = temperaturas[i];
}
if (temperaturas[i] < tempMin) {
tempMin = temperaturas[i];
}
}

cout << "Temperatura máxima: " << tempMax << "°C\n";


cout << "Temperatura mínima: " << tempMin << "°C\n";
}

// Función para mostrar el menú


void mostrarMenu() {
cout << "\n--- Menú de Opciones ---\n";
P á g i n a 5 | 10
cout << "1. Ingresar Datos\n";
cout << "2. Mostrar Todos los Datos\n";
cout << "3. Calcular Temperatura Máxima y Mínima\n";
cout << "4. Salir\n";
cout << "Seleccione una opción: ";
}

// Función principal
int main() {
setlocale(LC_ALL, "Spanish"); // Configurar idioma español
float* temperaturas = NULL; // Puntero para el arreglo dinámico
int contador = 0;
int opcion;

do {
mostrarMenu();
cin >> opcion;

switch (opcion) {
case 1:
ingresarDatos(temperaturas, contador);
break;
case 2:
mostrarDatos(temperaturas, contador);
break;
case 3:
calcularMaxMin(temperaturas, contador);
break;
case 4:
cout << "Saliendo del programa. ¡Hasta luego!\n";
break;
default:
cout << "Opción inválida. Intente de nuevo.\n";
}
} while (opcion != 4);

// Liberar memoria antes de finalizar el programa


delete[] temperaturas;
return 0;
}

Ejercicio 3: Estructura en Array Estático - Registro de Productos (Hasta 5


Productos)

Escribe un programa en C++ que almacene datos de hasta 5 productos en un arreglo


estático de estructuras Producto, con los campos nombre y precio. El programa debe
presentar un menú con las opciones:

1. Ingresar Datos: Permite al usuario ingresar el nombre y el precio de cada


producto, uno por uno, hasta un máximo de 5.
2. Mostrar Todos los Datos: Muestra el nombre y el precio de todos los
productos ingresados.
3. Calcular Precio Total: Calcula y muestra la suma de los precios de todos los
productos.
4. Salir: Finaliza el programa.

#include <iostream>
#include <windows.h> // Librería para configurar el idioma en Dev C++
using namespace std;

// Configuración para permitir el uso de tildes en Dev C++


void configurarIdioma() {
P á g i n a 6 | 10
SetConsoleCP(1252); // Permite ingresar caracteres con tildes
SetConsoleOutputCP(1252); // Permite mostrar caracteres con tildes
}

// Definición de la estructura Producto


struct Producto {
string nombre;
float precio;
};

int main() {
configurarIdioma();

const int MAX_PRODUCTOS = 5;


Producto productos[MAX_PRODUCTOS];
int contador = 0;
int opcion;
float precioTotal = 0;

do {
cout << "\n--- MENÚ ---\n";
cout << "1. Ingresar datos de producto\n";
cout << "2. Mostrar todos los datos\n";
cout << "3. Calcular precio total\n";
cout << "4. Salir\n";
cout << "Seleccione una opción: ";
cin >> opcion;

switch (opcion) {
case 1:
if (contador < MAX_PRODUCTOS) {
cout << "Ingrese el nombre del producto #" << (contador + 1) << ": ";
cin.ignore(); // Limpiar el buffer
getline(cin, productos[contador].nombre);
cout << "Ingrese el precio del producto #" << (contador + 1) << ": ";
cin >> productos[contador].precio;
contador++;
} else {
cout << "No se pueden ingresar más productos (máximo 5).\n";
}
break;

case 2:
if (contador == 0) {
cout << "No hay productos ingresados.\n";
} else {
cout << "Productos ingresados:\n";
for (int i = 0; i < contador; i++) {
cout << "Producto #" << (i + 1) << ": " << productos[i].nombre
<< ", Precio: " << productos[i].precio << "\n";
}
}
break;

case 3:
if (contador == 0) {
cout << "No hay productos para calcular el precio total.\n";
} else {
precioTotal = 0;
for (int i = 0; i < contador; i++) {
precioTotal += productos[i].precio;
}
cout << "El precio total de todos los productos es: " << precioTotal << "\n";
}
break;

case 4:
P á g i n a 7 | 10
cout << "Saliendo del programa...\n";
break;

default:
cout << "Opción no válida. Intente de nuevo.\n";
break;
}

} while (opcion != 4);

return 0;
}

Ejercicio 4: Estructura en Array Dinámico - Lista de Empleados (Sin límite de


datos)

Escribe un programa en C++ que permita almacenar datos de empleados en un


arreglo dinámico de estructuras Empleado, con los campos nombre, edad y sueldo. El
programa debe incluir un menú con las opciones:

1. Ingresar Datos: Permite al usuario ingresar el nombre, la edad y el sueldo de


un nuevo empleado, expandiendo el arreglo dinámico cada vez que se agrega
uno.
2. Mostrar Todos los Datos: Muestra el nombre, edad y sueldo de todos los
empleados ingresados.
3. Calcular Promedio de Sueldo: Calcula y muestra el promedio de sueldos
entre todos los empleados ingresados.
4. Salir: Finaliza el programa y libera la memoria.

#include <iostream>
#include <windows.h> // Librería para configurar el idioma en Dev C++
using namespace std;

// Configuración para permitir el uso de tildes en Dev C++


void configurarIdioma() {
SetConsoleCP(1252); // Permite ingresar caracteres con tildes
SetConsoleOutputCP(1252); // Permite mostrar caracteres con tildes
}

// Definición de la estructura Empleado


struct Empleado {
string nombre;
int edad;
float sueldo;
};

int main() {
configurarIdioma();

Empleado* empleados = NULL; // Puntero para arreglo dinámico


int cantidad = 0;
int opcion;
float sumaSueldos = 0;
float promedioSueldo = 0;

do {
cout << "\n--- MENÚ ---\n";
cout << "1. Ingresar datos de empleado\n";
cout << "2. Mostrar todos los datos\n";

P á g i n a 8 | 10
cout << "3. Calcular promedio de sueldo\n";
cout << "4. Salir\n";
cout << "Seleccione una opción: ";
cin >> opcion;

switch (opcion) {
case 1: {
// Crear un nuevo arreglo dinámico con espacio adicional
Empleado* nuevoArreglo = new Empleado[cantidad + 1];

// Copiar los datos existentes al nuevo arreglo


for (int i = 0; i < cantidad; i++) {
nuevoArreglo[i] = empleados[i];
}

// Ingresar datos del nuevo empleado


cout << "Ingrese el nombre del empleado: ";
cin.ignore(); // Limpiar el buffer
getline(cin, nuevoArreglo[cantidad].nombre);
cout << "Ingrese la edad del empleado: ";
cin >> nuevoArreglo[cantidad].edad;
cout << "Ingrese el sueldo del empleado: ";
cin >> nuevoArreglo[cantidad].sueldo;

// Liberar la memoria del arreglo anterior y actualizar el puntero


delete[] empleados;
empleados = nuevoArreglo;
cantidad++;

cout << "Empleado ingresado correctamente.\n";


break;
}

case 2:
if (cantidad == 0) {
cout << "No hay empleados ingresados.\n";
} else {
cout << "Lista de empleados:\n";
for (int i = 0; i < cantidad; i++) {
cout << "Empleado #" << (i + 1) << ":\n";
cout << "Nombre: " << empleados[i].nombre << "\n";
cout << "Edad: " << empleados[i].edad << "\n";
cout << "Sueldo: " << empleados[i].sueldo << "\n";
}
}
break;

case 3:
if (cantidad == 0) {
cout << "No hay empleados para calcular el promedio de sueldos.\n";
} else {
sumaSueldos = 0;
for (int i = 0; i < cantidad; i++) {
sumaSueldos += empleados[i].sueldo;
}
promedioSueldo = sumaSueldos / cantidad;
cout << "El promedio de sueldos es: " << promedioSueldo << "\n";
}
break;

case 4:
cout << "Saliendo del programa...\n";
break;

default:
cout << "Opción no válida. Intente de nuevo.\n";
break;
P á g i n a 9 | 10
}

} while (opcion != 4);

// Liberar la memoria dinámica antes de finalizar


delete[] empleados;

return 0;
}

P á g i n a 10 | 10

También podría gustarte