Autor Tema: Ejercicio en C++ crear un arreglo de tipo estructura de una dimensión promedio  (Leído 1866 veces)

ElMike

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 13
    • Ver Perfil
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
« Última modificación: 05 de Noviembre 2022, 20:12 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 987
    • Ver Perfil
Re: Ejercicio en C++
« Respuesta #1 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;
}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

ElMike

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 13
    • Ver Perfil
Re: Ejercicio en C++
« Respuesta #2 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

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 987
    • Ver Perfil
Re: Ejercicio en C++
« Respuesta #3 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;
}
« Última modificación: 05 de Noviembre 2022, 20:17 por Ogramar »
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".