Como paso a archivo .txt todo lo que reciba la función "ver"

Tengo este gran problema y no se como pasar la función de "ver" a un archivo .txt alguien podría ayudarme por favor, este es el código:

#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) * 1.25));
//Valor de horas extranocturnas
as->ValHorEN = (((as->ValHorO * as->horEN) * 1.75));
//Valor de horas extradiurnas dominicales/festivas
as->ValHorEDdom = (((as->ValHorO * as->horEDdom) * 2.0));
//Valor de horas extranocturnas dominicales/festivas
as ->ValHorENdom = (((as->ValHorO * as->horENdom) * 2.5));
//Valor de recargos noctutnos
as->ValHorRecarN = (((as->ValHorO * as->RecarN) * 1.35));
//Valor de recargos dominicales
as->ValHorRecarD = (((as->ValHorO * as->RecarD) * 1.75));
//Valor de recargos festivos
as->ValHorRecarF = (((as->ValHorO * as->RecarF) * 2.75));
//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");
}
as++;

void nomina::ver(empleado *as,int n){
for(int i=0;i<n;i++){
cout<<"\n \t\t\t\t\t\tNOMINA"<<endl; 
cout<<"\nNombre: "<<as->nom<<"\t\t\tSueldo: "<<"$"<<as->sueldo<<endl;
cout<<"Cedula: "<<as->cedula<<"\t\t\tCargo: "<<as->carg<<endl;
if(as->salario <= 1475434){
cout<<"Aux. Transporte: SI"<<endl;
}else{
cout<<"Aux. Transporte: NO"<<endl;
}
cout<<"\t\tDevengados: \t\t\t\tDeducciones: "<<"\n\t\t Hrs/Trab"<<endl;
cout<<"Sueldo basico: "<<"\t\t"<<240<<"\t"<<"$"<<as->sueldo<<"\t\tAporte de salud:"<<"\t $"<<as->Salud<<endl;
cout<<"Hora extradiurna: "<<"\t"<<as->horED<<"\t"<<"$"<<as->ValHorED<<"\t\t\tAporte de pension: "<<"\t"<<" $"<<as->ValPen<<endl;
cout<<"Hora extranocturna: "<<"\t"<<as->horEN<<"\t"<<"$"<<as->ValHorEN<<endl;
cout<<"Hora extradiurna d/f: "<<"\t"<<as->horEDdom<<"\t"<<"$"<<as->ValHorEDdom<<endl;
cout<<"Hora extranoc. D/f: "<<"\t"<<as->horENdom<<"\t"<<"$"<<as ->ValHorENdom<<endl;
cout<<"Recargo Nocturno: "<<"\t"<<as->RecarN<<"\t"<<"$"<<as->ValHorRecarN<<endl;
cout<<"Recargo Dominical: "<<"\t"<<as->RecarD<<"\t"<<"$"<<as->ValHorRecarD<<endl;
cout<<"Recargo Festivo: "<<"\t"<<as->RecarF<<"\t"<<"$"<<as->ValHorRecarF<<endl;
cout<<"\tValor Devengados: "<<"$"<<as->ValDeveng<<"\t\t\t Valor Deducciones: "<<" $"<<as->ValDeduc<<endl;
cout<<"\n\t\t\t\t\tSalario: "<<"$"<<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.ver(p,n);
}

1 respuesta

Respuesta

Lo que logro entender, es que quieres guardar en un archivo .txt, lo que muestra en pantalla la función ver. Si es así puede hacer lo siguiente:

1. Primero que todo debes incluir la biblioteca fstream.

2. Si lo que quieres es que se guarde como un registro debes concatenar todo lo que quieres guardar en el archivo .txt en una variable tipo string, en tu caso sería así:

void nomina::ver(empleado *as,int n){

string salida, trans;

for(int i=0;i<n;i++){

ofstream escribe;

escribe.open("Elnombre_que_quiera.txt,ios::app);

salida = " ";

trans = " ";
cout<<"\n \t\t\t\t\t\tNOMINA"<<endl; 
cout<<"\nNombre: "<<as->nom<<"\t\t\tSueldo: "<<"$"<<as->sueldo<<endl;
cout<<"Cedula: "<<as->cedula<<"\t\t\tCargo: "<<as->carg<<endl;
if(as->salario <= 1475434){
cout<<"Aux. Transporte: SI"<<endl;

trans = "SI";
}else{
cout<<"Aux. Transporte: NO"<<endl;

trans = "NO";

}//Corchete de else

salida += as->nombre + "," + convertir_float(as->sueldo) + "," + as->cedula + "," + as->carg + "," + trans;

salida += "\n";

escribe<<salida;

escribe.close()

}//Corchete de for

}//Corchete de función.

3. Si el valor del suelto lo tienes de tipo float, lo debes convertir a string, para eso te recomiendo estas funciones:

string convertir_float(float);
string convertir_float(float saldoa)
{
    ostringstream ostr;
    ostr << saldoa;
    //La funcion retorna el comando que hace la convercion
    return ostr.str();
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas