Código:
#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;
}
}
y ademas tengo dos dudas preguntas que necesito que me despejen con claridad porfa.. ya que quiero queme quede bien claro todo
¿Por qué el arreglo bidimensional es declarado con un solo índice (solo se especifican las filas y no las columnas)?
float *apun_trabajadores[10];
¿Por qué se debe reservar espacio para las columnas?
for(fila=0; fila<10; fila++) apun_trabajadores[fila]=(float*) malloc(6*sizeof(float));