Tengo un problema con el problema ya que cuando pido el siguiente empleado me pide doble vez los datos
#include <iostream>
#include <stdlib.h>
using namespace std;
class nomina {
public:
struct empleado{
char nom[30],carg[30];
int cedula,n;
int salario,sueldo;
int horED,horEN,horEDdom,horENdom,horas,HorTrabaj,RecarN,RecarD,RecarF;
int ValHorED,ValHorEN,ValHorEDdom,ValHorENdom,ValHorO,ValHorDF,ValHorRecarN,ValHorRecarD,ValHorRecarF,ValTOTHor,AuxTrans,Salud,ValPen,ValDeduc,ValDeveng;
};
public:
void leer(empleado *as, int);
void ver(empleado *as, int);
void proceso (empleado *as);
};
void nomina::leer(empleado *as, int n){
cout<<"\t CALCULO DE NOMINA"<<endl;
for(int i=0;i<n;i++)
{
cout<<"\nDigite nombre: "<<endl;
gets(as->nom);
gets(as->nom);
cout<<"\nDigite su cargo: "<<endl;
gets(as->carg);
cout<<"\nDigite cedula: "<<endl;
cin>>as->cedula;
cout<<"\nDigite sueldo: "<<endl;
cin>>as->sueldo;
proceso(as);
as++;
}
}
void nomina::proceso(empleado *as){
//Obtencion de "Valor de hora ordinaria.
as->ValHorO = as->sueldo/(30 * 8); // (30) los dias de un mes.
//Obtencion de recargos
cout<<"\nIngrese los recargos nocturnos(HORAS): "<<endl;
cin>>as->RecarN;
cout<<"\nIngrese los recargos dominicales(HORAS): "<<endl;
cin>>as->RecarD;
cout<<"\nIngrese los recargos festivos(HORAS): "<<endl;
cin>>as->RecarF;
//Obtencion de horas extras
cout<<"\nIngrese las horas extradiurnas: "<<endl;
cin>>as->horED;
cout<<"\nIngrese las horas extranocturnas: "<<endl;
cin>>as->horEN;
cout<<"\nIngrese las horas extradiurnas dominicales o festivas: "<<endl;
cin>>as->horEDdom;
cout<<"\ningrese las horas dominicales o festivas nocturnas"<<endl;
cin>>as->horENdom;
as->horas = as->horED + as->horEN + as->horEDdom + as->horENdom + as->RecarN + as->RecarD + as->RecarF;
//Valor total de las horas extras
if(as->horas <= 48){
//Valor de horas extradiurnas
as->ValHorED = (((as->ValHorO * as->horED) * 0.25)+as->ValHorO);
//Valor de horas extranocturnas
as->ValHorEN = (((as->ValHorO * as->horEN) * 0.75)+as->ValHorO);
//Valor de horas extradiurnas dominicales/festivas
as->ValHorEDdom = ((((as->ValHorO * as->horEDdom) * 0.75)+((as->ValHorO * as->horEDdom)*0.25))+as->ValHorO);
//Valor de horas extranocturnas dominicales/festivas
as ->ValHorENdom = ((((as->ValHorO * as->horENdom) * 0.75)+((as->ValHorO * as->horENdom)*0.75))+as->ValHorO);
//Valor de recargos noctutnos
as->ValHorRecarN = (((as->ValHorO * as->RecarN) * 0.35)+as->ValHorO);
//Valor de recargos dominicales
as->ValHorRecarD = (((as->ValHorO * as->RecarD) * 0.75)+as->ValHorO);
//Valor de recargos festivos
as->ValHorRecarF = (((as->ValHorO * as->RecarF) * 1.75)+as->ValHorO);
//Valor Total de horas extras y recargos
as->ValTOTHor = as->ValHorED + as->ValHorEN + as->ValHorEDdom + as->ValHorENdom + as->ValHorRecarN + as->ValHorRecarD + as->ValHorRecarF ;
///////Devengos
as->ValDeveng = as->ValTOTHor + as->sueldo;
//Salud
as->Salud = as->sueldo * 0.04;
//Pension
as->ValPen = as->sueldo * 0.04;
////////Deducciones
as->ValDeduc = as->Salud + as->ValPen;
//Salario
as->salario = as->ValDeveng - as->ValDeduc ;
}else{cout<<"Las horas registradas exceden el limite de 48 horas extras como maximo..."<<endl;
system("PAUSE");
}
}
void nomina::ver(empleado *as,int n){
for(int i=0;i<n;i++){
cout<<"\t \nNOMINA"<<endl;
cout<<"\nNombre: "<<as->nom<<endl;
cout<<"Cedula: "<<as->cedula<<endl;
cout<<"Cargo: "<<as->carg<<endl;
cout<<"Sueldo: "<<"$"<<as->sueldo<<endl;
if(as->salario <= 1475434){
cout<<"Aux. Transporte: SI"<<endl;
}else{
cout<<"Aux. Transporte: NO"<<endl;
}
cout<<"Devengos: "<<"$"<<as->ValDeveng<<endl;
cout<<"Deducciones: "<<"$"<<as->ValDeduc<<endl;
cout<<"Total de horas extras y recargos: "<<"$"<<as->ValTOTHor<<endl;
cout<<"Salario: "<<"$"<<as->salario<<endl;
as++;
}
}
int main(){
int n;
nomina d;
cout<<"Ingrese la cantidad de empleados: "<<endl;
cin>>n;
nomina::empleado array[n],*p;
p=&array[0];
d.leer(p,n);
p=&array[0];
d.proceso(p);
p=&array[0];
d.ver(p,n);
}