Dependiendo de la complejidad del problema podemos necesitar el empleo de vectores y matrices paralelos.
Se tiene la siguiente información:
· Nombres de 4 empleados.
· Ingresos en concepto de sueldo, cobrado por cada empleado, en los últimos 3 meses.
Confeccionar el programa para:
a) Realizar la carga de la información mencionada.
b) Generar un vector que contenga el ingreso acumulado en sueldos en los últimos 3 meses para cada empleado.
c) Mostrar por pantalla el total pagado en sueldos a todos los empleados en los últimos 3 meses
d) Obtener el nombre del empleado que tuvo el mayor ingreso acumulado
#include<iostream> using namespace std; class SueldoEmpleados { private: char empleados[4][40]; int sueldos[4][3]; int sueldostot[4]; public: void cargar(); void calcularSumaSueldos(); void imprimirTotalPagado(); void empleadoMayorSueldo(); }; void SueldoEmpleados::cargar() { for(int f = 0; f < 4; f++) { cout <<"Ingrese el nombre del empleado:"; cin.get(empleados[f],40); for(int c = 0; c < 3; c++) { cout <<"Ingrese sueldo:"; cin >>sueldos[f][c]; cin.get(); } } } void SueldoEmpleados::calcularSumaSueldos() { for (int f = 0; f < 4; f++) { int suma = 0; for (int c = 0; c < 3; c++) { suma = suma + sueldos[f][c]; } sueldostot[f] = suma; } } void SueldoEmpleados::imprimirTotalPagado() { cout <<"Total de sueldos pagados por empleado." <<"\n"; for(int f = 0; f < 4; f++) { cout <<empleados[f] <<" - " <<sueldostot[f] <<"\n"; } } void SueldoEmpleados::empleadoMayorSueldo() { int may=sueldostot[0]; char nom[40]; strcpy_s(nom,40,empleados[0]); for(int f = 0; f < 4; f++) { if (sueldostot[f] > may) { may=sueldostot[f]; strcpy_s(nom,40,empleados[f]); } } cout <<"El empleado con mayor sueldo es " <<nom <<" que tiene un sueldo acumulado de " <<may; cin.get(); } void main() { SueldoEmpleados se; se.cargar(); se.calcularSumaSueldos(); se.imprimirTotalPagado(); se.empleadoMayorSueldo(); }
Este proyecto lo puede descargar en un zip desde este enlace : MatrizSueldoEmpleados.zip
Para resolver este problema lo primero que hacemos es definir una matriz donde se almacenarán los sueldos mensuales de cada empleado, un vector de tipo cadena de caracteres donde almacenaremos los nombre de cada empleado (técnicamente es una matriz de caracteres) y finalmente definimos un vector paralelo a la matriz donde almacenaremos la suma de cada fila de la matriz:
char empleados[4][40]; int sueldos[4][3]; int sueldostot[4];
En el método de cargar inicializamos el vector con los nombres de los empleados y la matriz paralela donde se almacenan los últimos tres sueldos:
void SueldoEmpleados::cargar() { for(int f = 0; f < 4; f++) { cout <<"Ingrese el nombre del empleado:"; cin.get(empleados[f],40); for(int c = 0; c < 3; c++) { cout <<"Ingrese sueldo:"; cin >>sueldos[f][c]; cin.get(); } } }
El método sumar sueldos mediante dos for recorremos toda la matriz y sumamos cada fila:
void SueldoEmpleados::calcularSumaSueldos() { for (int f = 0; f < 4; f++) { int suma = 0; for (int c = 0; c < 3; c++) { suma = suma + sueldos[f][c]; } sueldostot[f] = suma; } }
El método imprimirTotalPagado tiene por objetivo mostrar los dos vectores (el de nombre de los empleados y el que almacena la suma de cada fila de la matriz):
void SueldoEmpleados::imprimirTotalPagado() { cout <<"Total de sueldos pagados por empleado." <<"\n"; for(int f = 0; f < 4; f++) { cout <<empleados[f] <<" - " <<sueldostot[f] <<"\n"; } }
Por último para obtener el nombre del empleado con mayor sueldo acumulado debemos inicializar dos variables auxiliares con el primer elemento del vector de empleados y en otra auxiliar guardamos la primer componente del vector sueldostot:
void SueldoEmpleados::empleadoMayorSueldo() { int may=sueldostot[0]; char nom[40]; strcpy_s(nom,40,empleados[0]); for(int f = 0; f < 4; f++) { if (sueldostot[f] > may) { may=sueldostot[f]; strcpy_s(nom,40,empleados[f]); } } cout <<"El empleado con mayor sueldo es " <<nom <<" que tiene un sueldo acumulado de " <<may; cin.get(); }
#include <iostream> using namespace std; class TemperaturaPaises { private: int tempmen[4][3]; char paises[4][40]; int temptri[4]; public: void cargar(); void imrimirTempMensuales(); void calcularTemperaturaTri(); void imprimirTempTrimestrales(); void paisMayorTemperaturaTri(); }; void TemperaturaPaises::cargar() { for(int f = 0; f < 4; f++) { cout <<"Ingrese el nombre del pais:"; cin.getline(paises[f],40); for(int c = 0; c < 3; c++) { cout <<"Ingrese temperatura mensual:"; cin >>tempmen[f][c]; cin.get(); } } } void TemperaturaPaises::imrimirTempMensuales() { for(int f = 0; f < 4; f++) { cout <<"Pais:" <<paises[f] <<":" <<"\n"; for(int c = 0; c< 3; c++) { cout <<tempmen[f][c] <<" "<<"\n"; } cout <<"\n"; } } void TemperaturaPaises::calcularTemperaturaTri() { for (int f = 0; f < 4; f++) { int suma = 0; for (int c = 0; c < 3; c++) { suma = suma + tempmen[f][c]; } temptri[f] = suma / 3; } } void TemperaturaPaises::imprimirTempTrimestrales() { cout <<"Temperaturas trimestrales." <<"\n"; for(int f = 0; f < 4; f++) { cout <<paises[f] <<" " <<temptri[f] <<"\n"; } } void TemperaturaPaises::paisMayorTemperaturaTri() { int may=temptri[0]; char nom[40]; strcpy_s(nom,40,paises[0]); for(int f = 0; f < 4; f++) { if (temptri[f] > may) { may=temptri[f]; strcpy_s(nom,40,paises[f]); } } cout <<"Pais con temperatura trimestral mayor es " <<nom <<" que tiene una temperatura de " <<may; } void main() { TemperaturaPaises tp; tp.cargar(); tp.imrimirTempMensuales(); tp.calcularTemperaturaTri(); tp.paisMayorTemperaturaTri(); cin.get(); }Este proyecto lo puede descargar en un zip desde este enlace :MatrizTemperaturas.zip