El Guru Programador
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Foro de C++/C#
Foros del Guru > C++/C#
 
Usuario Me falla la ultima funcion del pro...
pepehr25
1 Mensaje(s)
Enviado - 8/6/2006
 
Tengo que entregarlo el lunes y me falla la funcion del sueldo, el programa al codificarlo y ejecutarlo me genera bien las altas me genera bien la funcion de fichar(indica el numero de horas que trabaja el individuo) pero cuando voi a hallar los sueldos se me queda colgado en el bucle while, lo comprobe por un system("PAUSE") que le meti adredes dentro, aqui os paso el codigo windows xp borland c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef struct
{
int codigo_t;
int acu;
int sueldo_total;
}resultado;
typedef struct
{
int codigo_t;
int dia;
int hora_salida;
int minuto_salida;

}registro;
typedef struct
{
int codigo_t;
int precio_hora_extra;
int sueldo;
}empleado;
typedef struct
{
int codigo_t;
char nombre[20];
char apellidos[40];
int dni;
char direccion[30];
int num;
char localidad[30];
int tlf;
}datos;
FILE *fichero1;
FILE *fichero2;
FILE *fichero3;
FILE *fichero4;
resultado res;
registro reg;
empleado emp;
datos da;
void alta();
void fichar();
int sueldo();
void ayuda();
int main()
{
int op;
do{
do{
system("CLS");
textbackground(BLUE);
clrscr();
textcolor(WHITE);
cprintf("\n1.Altas 2.Fichar 3.Sueldo 4.Salir 5.Ayuda");
textcolor(LIGHTGRAY);
gotoxy(25,12);
cprintf("************ARTECONFI************\n");
gotoxy(25,13);
cprintf(" ******* Teruel ******* \n");
gotoxy(69,24);
cprintf("Opcion: ");
fflush(stdin);
cscanf("%i",&op);
}while(op<1 || op>5);
switch (op)
{
case 1:
system("CLS");
alta();
system("PAUSE");
break;
case 2:
system("CLS");
fichar();
system("PAUSE");
break;
case 3:
system("CLS");
sueldo();
system("PAUSE");
break;
case 4:
system("CLS");
printf("See You Later\n");
break;
case 5:
system("CLS");
ayuda();
system("PAUSE");
break;
}
}while(op!=4);
system("PAUSE");
return 0;
}
void alta()
{
int codigo;
char resp;
fichero1=fopen("datos.txt","rb");
fichero2=fopen("fichar.txt","rb");
fichero3=fopen("sueldos.txt","rb");
if (fichero1==NULL)
{
fclose(fichero1);
fichero1=fopen("datos.txt","wb");
}
else
{
fclose(fichero1);
fichero1=fopen("datos.txt","rb+");
}
if (fichero2==NULL)
{
fclose(fichero2);
fichero2=fopen("fichar.txt","wb");
}
else
{
fclose(fichero2);
fichero2=fopen("fichar.txt","rb+");
}
if (fichero3==NULL)
{
fclose(fichero3);
fichero3=fopen("sueldos.txt","wb");
}
else
{
fclose(fichero3);
fichero3=fopen("sueldos.txt","rb+");
}
do{
printf("Codigo: ");
fflush(stdin);
scanf("%i",&codigo);
da.codigo_t=codigo;
reg.codigo_t=codigo;
emp.codigo_t=codigo;
printf("Nombre: ");
fflush(stdin);
gets(da.nombre);
printf("Apellidos: ");
fflush(stdin);
gets(da.apellidos);
printf("DNI: ");
fflush(stdin);
scanf("%i",&da.dni);
printf("Direccion: ");
fflush(stdin);
gets(da.direccion);
printf("Numero: ");
fflush(stdin);
scanf("%i",&da.num);
printf("Localidad: ");
fflush(stdin);
gets(da.localidad);
printf("Telefono: ");
fflush(stdin);
scanf("%i",&da.tlf);
printf("Sueldo dia: ");
fflush(stdin);
scanf("%i",&emp.sueldo);
printf("Sueldo hora extra: ");
fflush(stdin);
scanf("%i",&emp.precio_hora_extra);
fwrite(&da,sizeof(datos),1,fichero1);
fwrite(&reg,sizeof(registro),1,fichero2);
fwrite(&emp,sizeof(empleado),1,fichero3);
printf("Desea dar de alta a otro trabajador?");
fflush(stdin);
scanf("%c",&resp);
}while(resp=='s' || resp=='S');
fclose(fichero1);
fclose(fichero2);
fclose(fichero3);
}
void fichar()
{
int codigo;
char resp;
fichero2=fopen("fichar.txt","rb");
if (fichero2==NULL)
{
fclose(fichero2);
fichero2=fopen("fichar.txt","wb");

}
else
{

fclose(fichero2);
fichero2=fopen("fichar.txt","rb+");
}
do{
printf("\Introduce el codigo del trabajador que termina: ");
fflush(stdin);
scanf("%i",&codigo);
reg.codigo_t=codigo;
printf("Introduce dia de trabajo: ");
fflush(stdin);
scanf("%i",&reg.dia);
printf("Horas trabajadas: ");
fflush(stdin);
scanf("%i",&reg.hora_salida);
printf("Minutos: ");
fflush(stdin);
scanf("%i",&reg.minuto_salida);
fwrite(&reg,sizeof(registro),1,fichero2);
printf("Desea realizar otro registro: ");
fflush(stdin);
scanf("%c",&resp);
}while(resp=='s' || resp=='S');
fclose(fichero2);
fichero2=fopen("fichar.txt","rb");
fread(&reg,sizeof(registro),1,fichero2);
while(!feof(fichero2))
{
printf("\n%i",reg.codigo_t);
printf("\n%i",reg.dia);
printf("\n%i",reg.hora_salida);
printf("\n%i\n",reg.minuto_salida);
}
fclose(fichero2);
}
void ayuda ()
{
//textbackground(BLUE);
//textcolor(LIGHTGRAY);
printf (" OPCION 1 ALTAS : En esta opcion el usuario debe insertar segun se"
"pida el Nombre y Apellidos del trabajador, Codigo del trabajador DNI,"
" Direccion, Localidad, Telefono\n"
" OPCION 2 FICHAR : Es la opcion donde el administrador de la empresa ficha"
" la hora a la que cada trabajador sale de la empresa\n"
" OPCION 3 SUELDO : Esta opcion calcula y nos ofrece el sueldo final del"
" trabajador, incluido el extra\n"
" OPCION 4 SALIR : Elegiendo esta opcion saldra del programa\n");
}
int sueldo()
{
int acu1=0;
char resp;
//fichero2=fopen("fichar.txt","rb");
fichero3=fopen("sueldos.txt","rb");
fichero4=fopen("resultado.txt","rb");
/*if (fichero2==NULL)
{
printf("Primero tiene que dar de alta a los trabajadores\n");
return 0;
}
else
{
fclose(fichero2);
//fichero2=fopen("fichar.txt","rb");
}*/
if (fichero3==NULL)
{
printf("Primero tiene que dar de alta a los trabajadores\n");
return 0;
}
else
{
fclose(fichero3);
fichero3=fopen("sueldos.txt","rb");
}
if (fichero4==NULL)
{
fclose(fichero4);
fichero4=fopen("resultado.txt","wb");
}
else
{
fclose(fichero4);
fichero4=fopen("resultado.txt","rb+");
}
system("PAUSE");
fread(&emp,sizeof(empleado),1,fichero3);
while(!feof(fichero3))
{
fichero2=fopen("fichar.txt","rb");
fread(&reg,sizeof(registro),1,fichero2);
while(!feof(fichero2))
{
if(reg.codigo_t==emp.codigo_t)
{
res.codigo_t=reg.codigo_t;
if(reg.hora_salida==8)
{
res.sueldo_total=emp.sueldo;
}
if (reg.hora_salida<8)
{
printf ("El trabajador no ha completado su jornada laboral, no cobra");
return 0;
}

res.acu=res.acu + reg.minuto_salida;
if (res.acu>=60)
{
acu1=res.acu-60;

reg.hora_salida=reg.hora_salida+1;
res.acu=acu1;
acu1=0;
}
if (reg.hora_salida>8)
{
acu1=reg.hora_salida - 8;
res.sueldo_total=emp.sueldo + (acu1 * emp.precio_hora_extra);
acu1=0;
}
}
//fclose(fichero2);
system("PAUSE");
}
fwrite(&res,sizeof(resultado),1,fichero4);
fclose(fichero2);
}
//fclose(fichero2);
fclose(fichero3);
fclose(fichero4);
system("PAUSE");
fichero1=fopen("datos.txt","rb");
//fichero2=fopen("fichar.txt","rb");
fichero4=fopen("resultado.txt","rb");
fread(&da,sizeof(datos),1,fichero1);
fread(&res,sizeof(resultado),1,fichero4);
while(!feof(fichero1) && !feof(fichero4))
{
if(res.codigo_t==da.codigo_t)
{
printf("%i\n",res.codigo_t);
printf("%s\n",da.nombre);
printf("%s\n",da.apellidos);
printf("%i\n",da.dni);
printf("%s\n",da.direccion);
printf("%i\n",da.num);
printf("%s\n",da.localidad);
printf("%i\n",da.tlf);
printf("Su sueldo del dia es:\t%i\n",res.sueldo_total);
}
}
fclose(fichero1);
fclose(fichero2);

}
 
 

 

Contactos myStudio Network