Hola buenas tengo que pasar un programa a subprograma y creo que lo tengo hecho muy mal si pudieran resolverme como se hace estaria agradecido.
Gracias
El programa es este:
ENUNCIADO
La empresa “Muebles Salmantinos S.A.” necesita un programa que calcule el sueldo de sus empleados. El programa deberá solicitar al usuario que introduzca los siguientes datos:
• Nombre y apellidos del empleado
• Sueldo base del empleado
• Edad
• Nº de hijos (0 si no tiene hijos)
• Categoría (A, B o C)
• Dedicación (nº de horas de trabajo asignadas por día. Este valor estará
comprendido entre 4 y 11).
1
Asignatura: Fundamentos de Programación
Profesora: Pilar Grande González
Grado en Ingeniería Informática de Servicios y Aplicaciones
E.I. Informática (Segovia) – Univ. Valladolid
A continuación, el programa deberá calcular el sueldo bruto del empleado teniendo en
cuenta que:
A) Los empleados mayores de 50 años y los menores de 25 años tienen un
Complemento de Edad de 180 euros.
B) Los empleados con hijos tienen un Complemento familiar de 60 euros por hijo.
C) Los empleados con categoría B con más de 5 hijos y los de categoría C con más de 3
hijos tienen un Complemento extraordinario del 5% de su sueldo base.
D) Los empleados que trabajan más de 8 horas tienen un Complemento de productividad de 70 euros. Para los demás, el complemento de productividad es de sólo 30 euros.
E) Los empleados con categoría A que trabajen menos de 8 horas tienen un descuento
laboral de 40 euros por cada hora menos que trabajen.
Una vez obtenido el sueldo bruto del empleado, se deberá calcular el sueldo neto restando al sueldo bruto un 5% de Seguridad Social y el porcentaje correspondiente a la retención a cuenta del IRPF. Esta retención será aplicada de acuerdo a la siguiente tabla:
Retención IRFP (%) Sueldo Bruto (Rango)
12 Inferior a 700 euros
15 Entre 701 y 1200 euros
18 Superior a 1200 euros
RESUELTO y esto hay que pasarlo a subprograma
#include <stdio.h>
#include <stdlib.h>
#define ConstanteSeguridadSocial = 0,05, complemento70 = 70 Complemento30 = 30, DescuentoLaboral = 40
int main(void)
{
char NombreApellidos;
int Edad;
int NumeroHijos;
char Categoria;
int Horas;
float Sueldo;
float Sueldo1;
float Sueldo2;
float Sueldo3;
float SueldoBruto;
float SueldoBruto1;
float SueldoNeto;
float IRPF;
int ComEdad;
int ComFam;
int CompExt;
int ComProd;
int DescLabo;
char A;
char B;
char C;
printf("Bienvenido a este programa ");
printf("Pulse <intro> para continuar ...");
getchar();
system("cls");
printf("Escriba nombre y apellidos ");
scanf("%c", &NombreApellidos);
getchar();
printf("Pulse <intro> para continuar...");
getchar();
system("cls");
printf("Escriba edad ");
scanf("%d", &Edad);
fflush(stdin);
printf("Pulse <intro> para continuar ...");
getchar();
system("cls");
printf("Escriba numero de hijos ");
scanf("%d", &NumeroHijos);
fflush(stdin);
printf("Pulse <intro> para continuar ...");
getchar();
system("cls");
printf("Escriba categoria(A, B o C): ");
scanf("%c", &Categoria);
getchar();
printf("Pulse <intro> para continuar ...");
system("cls");
printf("Escriba Numero de Horas ");
scanf("%d", Horas);
fflush(stdin);
printf("Pulse <intro> para continuar ...");
getchar();
system("cls");
printf("Escriba sueldo ");
scanf("%d", &Sueldo);
printf("Pulse <intro> para continuar ...");
getchar();
system("cls");
/* Comencemos */
if (Categoria = A && Edad<25 & Edad>50)
(ComEdad = Sueldo + 180);
if (Categoria = B && NumeroHijos>0)
(ComFam = Sueldo + NumeroHijos*60);
if (Categoria = B && NumeroHijos>5)
(Sueldo1 = Sueldo*5);
(Sueldo2 = Sueldo1/100);
(CompExt = Sueldo + Sueldo2 );
if (Categoria = C && NumeroHijos>3)
(Sueldo1 = Sueldo*5);
(Sueldo2 = Sueldo1/100);
(CompExt = Sueldo + Sueldo2 );
if (Horas>8)
(ComProd = Sueldo+70);
if (Horas<8)
(ComProd = Sueldo+30);
if (Categoria = A && Horas<8)
(DescLabo = Sueldo + Horas*40);
Sueldo= ComEdad + ComFam + CompExt + ComProd + DescLabo ;
/* Sueldo Neto */
SueldoBruto = Sueldo;
SueldoBruto1 = SueldoBruto;
Sueldo1 = Sueldo*5;
Sueldo2 = Sueldo1/100;
Sueldo3 = Sueldo-Sueldo2;
if ( SueldoBruto<700)
(Sueldo = SueldoBruto1*12);
(Sueldo1 = Sueldo/100);
(IRPF = SueldoBruto1 - Sueldo1);
if ( SueldoBruto>700 && SueldoBruto<1200)
(Sueldo = SueldoBruto1*15);
(Sueldo1 = Sueldo/100);
(IRPF = SueldoBruto1-Sueldo1);
if ( SueldoBruto>1200)
(Sueldo = SueldoBruto1*18);
(Sueldo1 = Sueldo/100);
(IRPF = SueldoBruto1 - Sueldo1);
SueldoNeto = SueldoBruto1 - Sueldo3 - IRPF ;
/* Parte final */
fflush(stdin);
printf("Datos generales: ");
printf("Nombre: %g ", NombreApellidos);
printf("Edad: %d ", Edad);
printf("Numero de Hijos: %d ", NumeroHijos);
printf("Categoria: %c ", Categoria);
printf("Dedicacion: %d ", Horas);
printf("Sueldo bruto: ");
printf("Sueldo Base: %d", Sueldo);
printf("Complemento de Edad: %d ", ComEdad);
printf("Complemento Familiar: %d", ComFam);
printf("Complemento Extraordinario: %d", CompExt);
printf("Complemento de Productividad: %d", ComProd);
printf("Descuento Laboral: %d", DescLabo);
printf("Sueldo Bruto: %d", SueldoBruto);
printf("Sueldo neto: ");
printf("Sueldo Bruto: %d", SueldoBruto);
printf("Seguridad social: %d", Sueldo3);
printf("IRPF: %d", IRPF);
printf("Sueldo Neto: %d", SueldoNeto);
return 0;
}