Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Panic0 en 11 Octubre 2022, 02:24 am



Título: Ayuda, para mostrar estrucutra de datos
Publicado por: Panic0 en 11 Octubre 2022, 02:24 am
Hola, estoy trabajando en un programa en c++, en el cual tengo una estructura de datos

Tengo este código
Código:
#include <iostream>
#include <conio.h>
#include <string>


using namespace std;

#define MAX_empleados 100
#define clear system("cls")
#define pause cout << "<ENTER>";getch();

struct empleados
{
    int id_empleado;
    string nombre;
    string apellido;
    int edad;
    int sueldo;
};


int main()
    {
        empleados empleado[MAX_empleados];

        int nro_empleado = 1;
        int cant_empleados = 0;
        int op;

        bool termine = false;
       
        char respuesta;
       
        string nom_empleado, ape_empleado;
        int edad_empleado, sueldo_empleado;

        while (true)
            {
                clear;
                cout << "1: Alta Empleado" << endl;
                cout << "2: Consulta de Empleado"<< endl;
                cout << "3: Listado de Empleados"<< endl;
                cout << "0: Salir"<< endl << "> ";
                cout << "El valor de la variable cant_empleados es " << cant_empleados<< endl;
                cin >> op;
                if(op == 0){
                    cout << "Gracias por usar!";
                    break;
                } 
                switch (op)
                {
               

                case 1:
                    clear;
                    cin.ignore();
                   
                    cout <<"Nombre del empleado   : "; getline(cin, nom_empleado);
                    cout <<"Apellido del empleado : "; getline(cin,ape_empleado);
                    cout <<"Ingrese su edad     : ";cin >> edad_empleado;
                    cout <<"Ingrese su Salario     : ";cin >> sueldo_empleado;
                    cin.ignore();
                    cout <<"\n";
                    clear;
                    cout << "empleado a ingresar: "<<endl;
                    cout << "Nombre      : "<<nom_empleado<<endl;
                    cout << "Apellido    : "<<ape_empleado<<endl;
                    cout << "Edad        : "<<edad_empleado<<endl;
                    cout << "Salario     : "<<sueldo_empleado<<endl;
                    cout << "\n";
                    cout << "Quiere ingresar este Empleado ? (s/n) ";cin >> respuesta;
                    cin.ignore();
                    respuesta = toupper(respuesta);
                    if (respuesta == 'S')
                        {
                           
                            cant_empleados++;
                            empleado[nro_empleado].id_empleado  = nro_empleado;
                            empleado[nro_empleado].nombre       = nom_empleado;
                            empleado[nro_empleado].apellido     = ape_empleado;
                            empleado[nro_empleado].edad         = edad_empleado;
                            empleado[nro_empleado].sueldo       = sueldo_empleado;
                        }   
                                   
               
                case 2:
                    break;
               
                case 3:
                    if(cant_empleados >= 1){
                        clear;
                        cout << "   Datos de empleados ingresados"  << endl <<  "Total de Empleados:"<<cant_empleados<<endl;
                        for (int nro = 0; nro <=cant_empleados;nro++)
                            {
                                cout << "   Nombre   : "<<empleado[nro].nombre<<endl;
                                cout << "   Apellido : "<<empleado[nro].apellido<<endl;
                                cout << "   Edad     : "<<empleado[nro].edad<<endl;
                                cout << "   Salario  : "<<empleado[nro].sueldo<<endl;
                                cout <<"--------------------"<<endl;
                       
                        pause;
                        break;
                    }
                }

                default:
                    break;
                }
               
            }
       
        return 0;
    }

Tengo listas la función de agregar, pero al momento de mostrar lo agregado, no me lo muestra, alguien tiene idea de lo que puede ser?


Título: Re: Ayuda, para mostrar estrucutra de datos
Publicado por: K-YreX en 24 Octubre 2022, 17:43 pm
Por un lado, hay un foro específico para C/C++... :silbar:

Y por otro, varias cosas:
  • Estás empezando a guardar empleados en el índice 1 y el primero es el índice 0.
  • El 'break' del case 3 está dentro del for() por lo que intenta mostrar el elemento 0, que está vacío porque guardaste en el 1 y sale del for() con el break, llega al default porque el break no estaba donde tenía que estar, vuelve al principio del 'while (true)', se ejecuta el 'clear' y por tanto "oh vaya, pestañeaste y te lo perdiste  :P"

PD: En vez de usar 'getch()' de la librería <conio.h> (que no es una librería estándar), usa 'cin.get()' de <iostream>... :rolleyes: :rolleyes: