Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: ElMike en 17 de Junio 2022, 23:27
-
Amigos, buenas tardes, espero se encuentren bien! Así mismo solicito de su apoyo para sacar adelante este proyecto, al parecer me he perdido en el camino...
PROYECTO
Se deberá crear un arreglo de tipo estructura de una dimensión 10, esto quiere decir que cuando se soliciten los datos de dichas personas, deberá recibir 4 datos distintos (nombre, edad, sexo y sueldo), de 10 personas diferentes.
Con dichos dados ingresados, referente al sexo, se deberá crear una función o procedimiento para contabilizar cuantos son hombres y cuantas son mujeres. Para el sueldo se deberá sacar el promedio de los suelos de todas las personas con una función que realice el promedio de dicho sueldo. Y crea un procedimiento que contabilice cuantas personas tienen la mayoría de edad y cuantos la minoría de edad.
Se deberá mostrar en pantalla como datos de salida, los datos de cada una de las personas y el conteo final de hombres, mujeres, cuantos son mayores de edad, y cuÁntos son menores de edad y el promedio de los sueldos.
Este es mi avance:
#include <iostream>
using namespace std;
struct persona{
char nombre[15];
int edad;
char sexo[15];
int sueldo;
};
int main(){
persona amigo[5];
for (int i = 0; i < 5; i++){
cout <<"Escriba el Nombre "<<i+1<<":";
cin >> amigo[i].nombre;
cout <<"\nEscriba la Edad de "<<i+1<<":";
cin >> amigo[i].edad;
cout <<"\nEscriba el Sexo "<<i+1<<":";
cin >> amigo[i].sexo;
cout <<"\nEscriba el Sueldo de "<<i+1<<":";
cin >> amigo[i].sueldo;
cout <<endl;
}
cout<<"El registro de personas que se introdujeron es: \n\n";
for (int i = 0; i < 5; i++){
cout<<"\t"<<amigo[i].nombre;
cout<<"\t"<<amigo[i].edad;
cout<<"\t"<<amigo[i].sexo;
cout<<"\t"<<amigo[i].sueldo<<"\n\n";
}
{
int i;
float promedio;
int sueldo;
float sueldo_mas_alto;
promedio = 0;
sueldo_mas_alto = 0;
for (i=0; i<5; i++)
{
cout << "PROCESO " << i << endl;
cout << "Ingresa el valor de sueldo: ";
cin >> sueldo;
cin.get();
promedio=promedio+sueldo;
if(i==0||sueldo_mas_alto<sueldo)
sueldo_mas_alto=sueldo;
cout << endl;
}
promedio=promedio/10;
cout << "Valor de promedio: " << promedio << endl;
cout << "Valor de sueldo mas alto: " << sueldo_mas_alto << endl;
system ("pause");
}
return 0;
}
Gracias por su apoyo, atenciones y sobre todo por ayudarme con este código.
Saludos,
ElMike
-
Pero tienes que modular el código, es decir, escribir procedimientos y funciones que reciban el array de struct persona y realicen una tarea específica con él.
Por ejemplo, aquí estaríamos usando un procedimiento para el conteo de hombres y mujeres.
Puede que hay alguna incorrección, C++ no es lo mío...
#include <iostream>
using namespace std;
struct persona {
char nombre[15];
int edad;
char sexo[15];
int sueldo;
};
//Declaración de procedimientos/funciones
void contarPorSexo(persona *personas);
int main() {
persona amigo[5];
for (int i = 0; i < 5; i++) {
cout << "Escriba el Nombre " << i + 1 << ":";
cin >> amigo[i].nombre;
cout << "\nEscriba la Edad de " << i + 1 << ":";
cin >> amigo[i].edad;
cout << "\nEscriba el Sexo " << i + 1 << ":";
cin >> amigo[i].sexo;
cout << "\nEscriba el Sueldo de " << i + 1 << ":";
cin >> amigo[i].sueldo;
cout << endl;
}
cout << "El registro de personas que se introdujeron es: \n\n";
for (int i = 0; i < 5; i++) {
cout << "\t" << amigo[i].nombre;
cout << "\t" << amigo[i].edad;
cout << "\t" << amigo[i].sexo;
cout << "\t" << amigo[i].sueldo << "\n\n";
}
//Pasamos el array a los procedimientos/funciones para que hagan sus tareas
contarPorSexo(amigo);
return 0;
}
//Definición de procedimientos/funciones
void contarPorSexo(persona *personas) {
int hombres = 0, mujeres = 0;
for (int i = 0; i < 5; i++) {
if (strcmp(personas[i].sexo,"hombre") > 0)
mujeres++;
else
hombres++;
}
cout << "Cantidad hombres: " << hombres << endl;
cout << "Cantidad mujeres: " << mujeres << endl;
}
-
Amigo Kabuto, gracias por tu valiosa aportación, nos falto agregar la biblioteca:
#include<cstring>
A pesar de que el programa compila y no arroja errores, no hace bien su trabajo, seguiré investigando.
Cualquier aportación es bienvenida.
Gracias,
ElMike
-
¿En qué te falla?
A mi si me cuenta bien hombres y mujeres. Solo faltaría añadir más funciones para completar lo que pide el enunciado.
Consola de depuraci6n de Microsoft Visual Studio
Escriba el Nombre 5:luis
Escriba la Edad de 5:32
Escriba el Sexo 5:hombre
Escriba el Sueldo de 5:4400
El registro de personas que se introdujeron es:
Pedro 23 hombre 4500
sara 25 mujer 4700
david 30 hombre 4300
laura 28 mujer 4500
luis 32 hombre 4400
Cantidad hombres: 3
Cantidad mujeres: 2
Por cierto, ya que estamos con C++, para las cadenas mejor usar "string" en lugar de arrays de caracteres.
Así luego es más fácil hacer comparaciones, sin tener que usar strcmp()
#include <iostream>
#include <string>
using namespace std;
struct persona {
string nombre;
int edad;
string sexo;
int sueldo;
};
//Declaración de procedimientos/funciones
void contarPorSexo(persona *personas);
int main() {
persona amigo[5];
for (int i = 0; i < 5; i++) {
cout << "Escriba el Nombre " << i + 1 << ":";
cin >> amigo[i].nombre;
cout << "\nEscriba la Edad de " << i + 1 << ":";
cin >> amigo[i].edad;
cout << "\nEscriba el Sexo " << i + 1 << ":";
cin >> amigo[i].sexo;
cout << "\nEscriba el Sueldo de " << i + 1 << ":";
cin >> amigo[i].sueldo;
cout << endl;
}
cout << "El registro de personas que se introdujeron es: \n\n";
for (int i = 0; i < 5; i++) {
cout << "\t" << amigo[i].nombre;
cout << "\t" << amigo[i].edad;
cout << "\t" << amigo[i].sexo;
cout << "\t" << amigo[i].sueldo << "\n\n";
}
//Pasamos el array a los procedimientos/funciones para que hagan sus tareas
contarPorSexo(amigo);
return 0;
}
//Definición de procedimientos/funciones
void contarPorSexo(persona *personas) {
int hombres = 0, mujeres = 0;
for (int i = 0; i < 5; i++) {
if (personas[i].sexo == "mujer")
mujeres++;
else
hombres++;
}
cout << "Cantidad hombres: " << hombres << endl;
cout << "Cantidad mujeres: " << mujeres << endl;
}