Hola amigos, tengo un problema en mi programa, el programa me deveria mostrar los datos de los obreros cuando entre en el menu de reportes pero no lo hace, mas bien me vota un error en tiempo de ejecucion a ver si me hechan una mano
ok???
#include "iostream.h"
#include "string.h"
#include "stdlib.h"
struct datos
{
char nombre[20];
char apellido[20];
int edad;
float salario;
float bono;
float h_trabajadas;
float h_extras;
};
void llenar(datos vector[],FILE *archivo, int nro)
{
archivo=fopen("empresa.txt","a+");
int cont;
for (cont=0;cont<nro;cont++)
{
cout<<"\n\n------------INGRESE SUS DATOS CORRESPONDIENTES--------------\n\n";
cout<< "Ingrese el nombre: ";
cin>>vector[cont].nombre;
cout<< "Ingrese el apellido: ";
cin>>vector[cont].apellido;
cout<< "Ingrese la edad: ";
cin>>vector[cont].edad;
cout<< "Ingrese el salario: ";
cin>>vector[cont].salario;
cout<< "Ingrese el bono : ";
cin>>vector[cont].bono;
cout<< "Ingrese las horas trabajadas: ";
cin>>vector[cont].h_trabajadas;
cout<< "Ingrese horas extras: ";
cin>>vector[cont].h_extras;
fprintf(archivo, "%s %s %d %f %f %f %d\n",vector[cont].nombre,vector[cont].apellido,vector[cont].edad,vector[cont].salario,vector[cont].h_trabajadas,vector[cont].h_extras);
}
fclose(archivo);
}
void cantidad(int *nro)
{
cout<< "Ingrese la cantidad de pesonas:";
cin>>*nro;
}
void crear(FILE *archivo)
{
archivo=fopen("empresa.txt","w+");
fclose(archivo);
}
void menu(int *opc)
{
cout<<"\n\n--------ELIJA ENTRE EL 1 a 4 ---------------\n\n";
cout<<"1. Crear Archivo\n";
cout<<"2. Catidad de datos\n";
cout<<"3. Imprimr Datos\n";
cout<<"4. Salir\n";
cout<<"Ingrese la opcion: ";
cin>>*opc;
}
void menu2(int *opc1)
{
cout<<"1. las personas q ganan mas de 500\n";
cout<<"2. Las personas con bono mas de 125.25\n";
cout<<"3. las horas extras trabajadas\n";
cout<<"4. EL sueldo\n";
cout<<"Ingrese la opcion: ";
cin>>*opc1;
}
void reportes(FILE *archivo, datos vector[])
{
archivo=fopen("empresa.txt","r");
int opc1;
int cont=0;
int n;
menu2(&opc1);
switch(opc1)
{
case 1:
//mayores a 500
{
while (!feof(archivo))
{
fscanf(archivo, "%s %s %d %f %f %f %d\n",vector[cont].nombre,vector[cont].apellido,vector[cont].edad,vector[cont].salario,vector[cont].h_extras,vector[cont].h_trabajadas);
cont++;
}
int cont2;
for(cont2=0;cont2<cont;cont2++)
{
if(vector[cont2].salario>500)
{
printf("%s %s %f",vector[cont2].nombre, vector[cont2].apellido,vector[cont2].salario );
}
}
}
break;
case 2:
while (!feof(archivo))
{
fscanf(archivo, "%s %s %d %f %f %f %d",vector[cont].nombre,vector[cont].apellido,vector[cont].edad,vector[cont].salario,vector[cont].h_extras,vector[cont].h_trabajadas);
cont++;
}
int cont2;
for(cont2=0;cont2<cont;cont2++)
{
if(vector[cont2].salario>125.25)
{
printf("%s %s %f",vector[cont2].nombre, vector[cont2].apellido,vector[cont2].bono );
}
}
break;
case 3:
while (!feof(archivo))
{
fscanf(archivo, "%s %s %d %f %f %f %d",vector[cont].nombre,vector[cont].apellido,vector[cont].edad,vector[cont].salario,vector[cont].h_extras,vector[cont].h_trabajadas);
cont++;
}
for(cont2=0;cont2<cont;cont2++)
{
if(vector[cont2].h_extras>20)
{
float t;
t=vector[cont2].h_extras*0.50;
printf("%s %s %f",vector[cont2].nombre, vector[cont2].apellido,t );
}
if(vector[cont2].h_extras>10)
{
float t;
t=vector[cont2].h_extras*0.25;
printf("%s %s %f",vector[cont2].nombre, vector[cont2].apellido,t );
}
}
break;
case 4:
{
while (!feof(archivo))
{
fscanf(archivo, "%s %s %d %f %f %f %d",vector[cont].nombre,vector[cont].apellido,vector[cont].edad,vector[cont].salario,vector[cont].h_extras,vector[cont].h_trabajadas);
cont++;
}
int cont2;
for(cont2=0;cont2<cont;cont2++)
{
float tg;
tg= vector[cont2].salario + 1.25 * vector[cont2].h_trabajadas + vector[cont2].bono *vector[cont2].h_extras;
printf("%s %s %f %f %f\n\n",vector[cont2].nombre, vector[cont2].apellido,vector[cont2].salario,vector[cont2].bono,tg );
}
}
break;
default:
cout<<"Ingrese un valor entre 1 y 4\n";
break;
}
}
void main()
{
datos vector[100];
FILE *archivo;
//int opc1;
int n;
int opc;
do
{
menu(&opc);
switch(opc)
{
case 1:
crear(archivo);
break;
case 2:
cantidad(&n);
llenar(vector,archivo, n);
// menu2(*opc1);
break;
case 3:
reportes(archivo,vector);
break;
case 4:
cout<<"Gracias....\n";
break;
default:
cout<<"Ingrese un valor entre 1 y 4\n";
break;
}
}
while (opc != 4);
}