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

Título: Ejercicio en C++ crear un arreglo de tipo estructura de una dimensión promedio
Publicado 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:


Código: [Seleccionar]
#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
Título: Re: Ejercicio en C++
Publicado por: Kabuto en 19 de Junio 2022, 01:02
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...

Código: [Seleccionar]
#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;
}
Título: Re: Ejercicio en C++
Publicado por: ElMike en 20 de Junio 2022, 18:38
Amigo Kabuto, gracias por tu valiosa aportación,  nos falto agregar la biblioteca:

Código: [Seleccionar]
#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
Título: Re: Ejercicio en C++
Publicado por: Kabuto en 20 de Junio 2022, 21:34
¿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.

Citar
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()

Código: [Seleccionar]
#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;
}