[DUDA][Estructuras - C++] Habrá una forma mas simple de hacer?

Iniciado por Alape04, 12 Junio 2016, 03:19 AM

0 Miembros y 2 Visitantes están viendo este tema.

Alape04

Bueno, este es mi segunda duda soy novato. Quiero saber si voy bien y si hay otra forma mas facil te tener los datos porque son 10 empleados.

El codigo es
Código (cpp) [Seleccionar]
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
struct empleados{
string nombre;
string apellido;
string documento;
string numero;
string fecha;
string fingreso;
};
void pausa();
int main() {
empleados e1;
e1.nombre="Juan Sebastian";
e1.apellido="Alape Soto";
e1.documento="C.C";
e1.numero="1068246213";
e1.fecha="04/06/1998";
e1.fingreso="05/02/2016\n\n";

empleados e2;
e2.nombre="Augusto Daniel";
e2.apellido="Narvaez Baró";
e2.documento="T.I";
e2.numero="98060468184";
e2.fecha="21/05/1999";
e2.fingreso="05/02/2016\n\n";

int  x, tecla;
do{
system("cls");
cout<<"             UNICOR S.A.S\n";
cout<<" ********** LISTADO DE EMPLEADOS ************\n";
cout<<" 1- Juan Sebastian Alape Soto \n";
cout<<" 2- Augusto Daniel Narvaez Baró \n";
cout<<" 3- Salir \n";
cout<<" ********************************************\n\n";
cout<<" Opcion: ";cin>>tecla;
system("cls");
cout<<"=================================================             >>UNICOR S.A.S<<\n";

switch (tecla){
case 1:
cout<<" NOMBRE: "<<e1.nombre<<"   APELLIDO: "<<e1.apellido<<endl;
cout<<" TIPO DE DOCUMENTO: "<<e1.documento<<"   N° "<<e1.numero<<endl;
cout<<" FECHA DE NACIMIENTO: "<<e1.fecha<<endl;
cout<<" FECHA DE INGRESO: "<<e1.fingreso<<endl;
cout<<"================================================= \n";
system("pause");
break;
case 2:
cout<<" NOMBRE: "<<e2.nombre<<"   APELLIDO: "<<e2.apellido<<endl;
cout<<" TIPO DE DOCUMENTO: "<<e2.documento<<"   N° "<<e2.numero<<endl;
cout<<" FECHA DE NACIMIENTO: "<<e2.fecha<<endl;
cout<<" FECHA DE INGRESO: "<<e2.fingreso<<endl;
cout<<"================================================= \n";
system("pause");
break;
case 3:
cout<<"\n >>>>--- SALIENDO ---<<<<\n";
x=3;
break;
default:
system("cls");
cout<<"Dijite un numero de 1 - 3 \a\n";
system("pause");
break;
}

}while(x !=3);
return 0;
}



Gracias

AlbertoBSD

¿Pero que es lo que tratas de hacer?

Los datos se pueden cargar desde un archivo directo a la estructura.

¿Quieres leer los datos desde el teclado y cargarlos a la estructura?
¿Quieres leer los datos desde un archivo y cargarlos a la estructura?

¿Que tiene que hacer tu programa?

Saludos!

Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

JonaLamper

#2
No sé exactamente a que te refieres con "forma más fácil de tener los datos".

Podrías tener desde un array de estructuras hasta cosas como un árbol balanceado o una tabla hash. Depende de si te importan mucho las complejidades a la hora de buscar y mostrar los datos.

Por otro lado, yo haría una función que sirva sólo para mostrar los datos de un empleado para evitar tener ese switch que la verdad queda un poco feo en el main. Y también otra función que me cargue los datos desde el fichero/teclado.

Aunque si estás empezando, me olvidaría de las estructuras de datos avanzadas y simplemente haría un array de estructuras (o sea, una array en el que cada posición será una estructura de tipo empleado). Para mostrar todos los empleados, simplemente tienes que recorrer el array e ir llamando a la función que te he comentado antes (la que te muestra los datos de un empleado en particular).

La declaración de los tipos podría ser algo así:

Código (cpp) [Seleccionar]
int const MAX_EMPLEADOS = 10;

typedef struct{
string nombre;
string apellido;
string documento;
string numero;
string fecha;
string fingreso;
}tEmpleado;

typedef tEmpleado tArray[MAX_EMPLEADOS];

typedef struct{
tArray lista;
int contador;
}tEmpleados;


Como ves, tendríamos una constante que indica el número total de empleados. Después tendríamos el tipo tEmpleado (que es la estructura que guarda los datos de UN SÓLO empleado). Después tenemos un array de tamaño MAX_EMPLEADOS (o sea, 10) en el que cada posición almacena los datos de un sólo empleado. Y por último tenemos una estructura con un array (lo he llamado "lista" porque quizá es más intuitivo) y con su correspondiente contador (el contador nos marca cuántos empleados tenemos en la "lista"), y a esta estructura la he llamado tEmpleados (pues es precisamente un array con varios empleados).


Posdata: es bueno tener claro cómo vamos a llamar a las estructuras. Si tenemos un código pequeño da igual, pero si el código empieza a crecer... Lo que quiero decir es que si tienes una estructura que almacena los datos de un sólo empleado, es mejor llamarla "empleado" (o tEmpleado como la he llamado yo) a llamarla "empleados" (pues en realidad sólo almacena los datos de un empleado).
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.

AlbertoBSD

Si quieres guardar estructuras en archivo y leerlas desde el mismo te dejo 2 de mis videos:

[youtube=640,360]https://www.youtube.com/watch?v=a2569dz-0Cs[/youtube]

[youtube=640,360]https://www.youtube.com/watch?v=DOqtEMW1Nqk[/youtube]

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Alape04

Pues el programa consiste en lo siguiente:

Se desea desarrollar un programa que calcule la nomina para los 10 empleados con

los que cuenta la empresa UNICOR S.A.S. El reporte debe mostrar Nombre, apellido, tipo identificación, identificación, fecha nacimiento, fecha ingreso, y finalmente todos los aspectos de su liquidación. Tener en cuenta que todos los empleados ganas un salario mínimo a fecha de hoy, a ese salario bruto se le descuenta: 4% por salud, 4% por pensión, 1% por riesgos profesionales, el 10% por la retención en la fuente, 1% para Sena, 1% para icbf y 2% por estampilla. Y sobre el valor resultante se le descuenta el 0.4% correspondiente al 4*1000. Tenga en cuenta el derecho a subsidio de transporte. Para ello se debe usar registros.