¿Cómo logro pasar la función de "ver" a un archivo .txt?

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

1 respuesta

Respuesta
1

¿Qué es exactamente lo que quieres hacer?

¿Pasar el código del método Ver() a un fichero .txt externo?

¿O pasar la salida del método Ver() a un fichero .txt?

Hola Joseka!, disculpa nuevamente, necesito pasarlo a un fichero .txt externo con la función de la librería fstream pero no se como hacerlo...

Pues mira, lo primero de todo sería, al mismo tiempo que muestras en pantalla los textos del método ver(...), guardar las cadenas de texto que vas mostrando en un string para después devolver este string en el método ver(...) o, imprimirlo después.

El funcionamiento después de fstream es sencillo y siempre sigue los siguientes pasos:

  1. Abrir un archivo con el método open(String nombreArchivo)
  2. Escribir en el archivo usando un flujo de datos: esto es, lo mismo que usas para cout o cin (<<, >>)
  3. Cerrar el archivo

Te dejo un código por si te puede orientar:

ofstream miFichero;
miFichero.open("fichero.txt");
miFichero << d.ver(p,n); // Tienes que devolver un string del método ver(...)
MiFichero. Close();

De esa forma, todo lo que devuelvas de ver(...) se guardará en el archivo fichero.txt.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas