Gracias por responder Maestro rir3760 con esas observaciones e me hisistes funcionar el programa y tendre encuenta tu comentario de el uso de gets Dios te bendiga.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú
#include <stdio.h>
#include <stdlib.h>
#define LNOMBRE 50
#define LDIRECCION 100
typedef struct
{
char nombre[LNOMBRE]; /* Nombre */
char direccion[LDIRECCION]; /* Dirección */
long telefono; /* Teléfono */
} TipoDato;
/* Lee un dato desde el registro indicado */
int leeDato(FILE *fichero, TipoDato *dato, int pos)
{
if(fseek(fichero,pos*sizeof(TipoDato),SEEK_SET))
return 0;
return fread(dato, sizeof(TipoDato),1,fichero)==1;
}
/* Escribe un dato desde el registro indicado */
int escribeDato(FILE *fichero, TipoDato *dato, int pos)
{
if(fseek(fichero,pos*sizeof(TipoDato),SEEK_SET))
return 0;
return fwrite(dato, sizeof(TipoDato),1,fichero)==1;
}
/* Añade un dato al final del fichero */
int anadeDato(FILE *fichero, TipoDato *dato)
{
if(fseek(fichero,0,SEEK_END))
return 0;
return fwrite(dato, sizeof(TipoDato),1,fichero)==1;
}
/*Programa de prueba que aleatoriamente añade o modifica */
int main()
{
int i,nreg,anade,res;
FILE *f;
TipoDato d;
if((f=fopen("listin.bin","r+b"))== NULL)
return 1;
/*Muestra los datos*/
for(i=0; ; i++)
if(leeDato(f,&d,i))
printf("Registro :%d\nNombre: %s\nDireccion: %s\nTelefono : %dl\n",
i+1,d.nombre,d.direccion, d.telefono);
else
break;
anade=rand()%2;
if(anade)
printf("Adición de registro\n");
else
{
printf("Modificación de registro\n");
printf("Número de registro ");
scanf("%d",&nreg);
gets(d.nombre); /* Se lee el final de línea que queda */
}
printf("Nombre ");
gets(d.nombre);
printf("Dirección ");
gets(d.direccion);
printf("Número de teléfono ");
scanf("%dl",&d.telefono);
if(anade)
res=anadeDato(f,&d);
else
res=escribeDato(f,&d,nreg-1);
if(!res)
printf("Error\n");
fclose(f);
return 0;
}
#include<stdio.h>
#include<iostream>
void lectura_datos(float*apun_trabajadores[10]);
void imprimir_datos(float*apun_trabajadores[10]);
void calcular_salarioTotal(float*apun_trabajadores[10]);
main()
{
float*apun_trabajadores[10];
int opc;
do
{
printf("*******MENU*******\n");
printf("1.-LECTURA DE CLAVE Y SALARIO \n");
printf("2.-APLICAR DESCUENTOS \n");
printf("3.-IMPRIMIR TABLA \n");
printf("4.-SALIR DEL PROGRAMA \n");
printf("SELECCIONE LA OPCION DESEADA \n");
scanf("%d",&opc);
switch(opc)
{
case 1:
{
void lectura_datos(float*apun_trabajadores[10]);
break;
}
case 2:
{
void calcular_salarioTotal(float*apun_trabajadores[10]);
break;
}
case 3:
{
void imprimir_datos(float*apun_trabajadores[10]);
break;
}
}
}
while(opc!=4);
}
void lectura_datos(float*apun_trabajadores[10])
{
int fila, columna;
for(fila=0;fila<10;fila++)
apun_trabajadores[fila]=(float*)malloc(6*sizeof(float));
for(fila=0;fila<10;fila++)
{
printf("CLAVE DEL TRABAJADOR %d= ", fila);
scanf("%f",(apun_trabajadores[fila]+0));
printf("SALARIO DEL TRABAJADOR %d= ", fila);
scanf("%f",(apun_trabajadores[fila]+1));
}
}
void imprimir_datos(float*apun_trabajadores[10])
{
int fila,columna;
printf("LOS ELEMENTOS DEL ARREGLO SON \n");
printf("CLAVE\tSAL_B\tIMSS\tINAS\tHRS EXT\tTOTAL\t");
for(fila=0;fila<10;fila++)
{
printf("\n");
for (columna=0;columna<6;columna++)
{
printf("%.2f\t",*(apun_trabajadores[fila]+columna));
}
}
printf("\n");
}
void calcular_salarioTotal(float*apun_trabajadores[10])
{
int fila;
float s_neto,descuento_inasistencia,bono_horaextra;
for(fila=0;fila<10;fila++)
{
printf("DESCUENTO IMSS %d= ",fila);
scanf("%f",(apun_trabajadores[fila]+2));
printf("NUMERO DE FALTAS %d= ",fila);
scanf("%f",(apun_trabajadores[fila]+3));
printf("HORAS EXTRAS %d= ",fila);
scanf("%f",(apun_trabajadores[fila]+4));
printf("%.2f ",*(apun_trabajadores[fila]+1));
descuento_inasistencia=*(apun_trabajadores[fila]+1)/7* *(apun_trabajadores[fila]+3);
bono_horaextra=(*(apun_trabajadores[fila]+1)/7)/4* *(apun_trabajadores[fila]+4);
s_neto=*(apun_trabajadores[fila]+1)-*(apun_trabajadores[fila]+2)- descuento_inasistencia+bono_horaextra;
*(apun_trabajadores[fila]+5)=s_neto;
}
}
#include<stdio.h>
#include<iostream.h>
void lectura_datos(float*apun_trabajadores[10]);
void imprimir_datos(float*apun_trabajadores[10]);
void calcular_salarioTotal(float*apun_trabajadores[10]);
main()
{
float*apun_trabajadores[10];
int opc;
do
{
printf("*******MENU*******\n");
printf("1.-LECTURA DE CLAVE Y SALARIO \n");
printf("2.-APLICAR DESCUENTOS \n");
printf("3.-IMPRIMIR TABLA \n");
printf("4.-SALIR DEL PROGRAMA \n");
printf("SELECCIONE LA OPCION DESEADA \n");
scanf("%d",&opc);
switch(opc)
{
case 1:
{
lectura_datos(*apun_trabajadores[10]);
break;
}
case 2:
{
calcular_salarioTotal(float*apun_trabajadores[10]);
break;
}
case 3:
{
imprimir_datos(float*apun_trabajadores[10]);
break;
}
}
}
while(opc!=4);
}
void lectura_datos(float*apun_trabajadores[10])
{
int fila,columna;
for(fila=0;fila<10;fila++)
apun_trabajadores[fila]=(float*)malloc(6*sizeof(float));
for(fila=0;fila<10;fila++)
{
printf("CLAVE DEL TRABAJADOR %d= ", fila);
scanf("%f,(apun_trabajadores[fila]+0));
printf("SALARIO DEL TRABAJADOR %d= ", fila);
scanf("%f",(apun_trabajadores[fila]+1));
}
}
void imprimir_datos(float*apun_trabajadores[10])
{
int fila,columna;
printf("LOS ELEMENTOS DEL ARREGLO SON \n");
printf("CLAVE\tSAL_B\tIMSS\tINAS\tHRS EXT\tTOTAL\t");
for(fila=0;fila<10;fila++)
{
printf("\n");
for (columna=0;columna<6;columna++)
{
printf("%.2f\t",*(apun_trabajadores[fila]+columna));
}
}
printf("\n");
}
void calcular_salarioTotal(float*apun_trabajadores[10])
{
int fila;
float s_neto,descuento_inasistencia,bono_horaextra;
for(fila=0;fila<10;fila++)
{
printf("DESCUENTO IMSS %d= ",fila);
scanf("%f",(apun_trabajadores[fila]+2));
printf("NUMERO DE FALTAS %d= ",fila);
scanf("%f",(apun_trabajadores[fila]+3));
printf("HORAS EXTRAS %d= ",fila);
scanf("%f",(apun_trabajadores[fila]+4));
printf("%.2f ",*(apun_trabajadores[fila]+1));
descuento_inasistencia=*(apun_trabajadores[fila]+1)/7* *(apun_trabajadores[fila]+3);
bono_horaextra=(*(apun_trabajadores[fila]+1)/7)/4* *(apun_trabajadores[fila]+4);
s_neto=*(apun_trabajadores[fila]+1)-*(apun_trabajadores[fila]+2)- descuento_inasistencia+bono_horaextra;
*(apun_trabajadores[fila]+5)=s_neto;
}
}