miércoles, 19 de noviembre de 2014

Ejemplo de un programa en C usando sentencias selectivas multiples

En este ejemplo de aplicación de sentencias selectivas múltiples tomaremos un ejercicio del libro: "Fundamentos de programacíon Piensa en C" (Cairó) el cual dice:

En algunas oficinas del gobierno pagan horas extra a los burócratas, además del salario correspondiente. Escribe un diagrama de flujo y su correspondiente programa en C que permita calcular la cantidad a pagar a un trabajador tomando en cuenta su salario y las horas extra trabajadas. Las horas extra se calculan en función de la tabla 2.8. Cada trabajador puede tener como máximo 30 horas extra, si tienen más, sólo se les pagarán las primeras 30. Los trabajadores con categoría 4 o mayor a 4 no pueden recibir este beneficio.

TABLA 2.8:
CATEGORÍA TRABAJADOR
HORAS EXTRA
1
$40
2
$50
3
$85


Aplicando los pasos para realizar un diagrama de flujo:

Paso 1: Definición del problema.
Se quiere realizar un programa que calcule el salario total de un empleado de acuerdo a su categoría y a las horas extras trabajadas. El programa debe evaluar el nivel y las horas extras para calcular el salario total a pagar. Solamente se pagan hasta un límite de 30 horas extras. Los empleados de categoría 4 en adelante no tienen ningún privilegio de pago por horas extras. Se imprime el salario total a pagar ya contando el valor de las horas extras.

Paso 2: Planeación de la solución.

Datos de entrada: Números enteros positivos (salario, categoría y horas extras).
Datos de salida: Numero entero positivo (Salario total).
Datos adicionales: Valor de hora extra según categoría 1: 40$, categoría 2: 50$, categoría 3: 85$

Proceso:
Lo primero que se debe hacer es conocer el valor del salario del empleado, su categoría y su número de horas extras trabajadas. El programa utiliza un seleccionador para clasificar la información. Y de acuerdo a eso realiza lo siguiente:
  •         Si es de categoría 1 el programa procede a evaluar el número de horas extra trabajadas, si el empleado excede las 30 horas trabajadas el programa suma 1200 al valor de su salario, obteniendo así el salario total del empleado. Si el número de horas es menor a 30 el programa multiplica el número de horas trabajadas por 40, finalmente ese resultado lo suma al salario ingresado obteniendo así el salario total.
  •        Si es de categoría 2 el programa procede a evaluar el número de horas extra trabajadas, si el empleado excede las 30 horas trabajadas el programa suma 1500 al valor de su salario, obteniendo así el salario total del empleado. Si el número de horas es menor a 30 el programa multiplica el número de horas trabajadas por 50, finalmente ese resultado lo suma al salario ingresado obteniendo así el salario total.
  •          Si es de categoría 3 el programa procede a evaluar el número de horas extra trabajadas, si el empleado excede las 30 horas trabajadas el programa suma 2250 al valor de su salario, obteniendo así el salario total del empleado. Si el número de horas es menor a 30 el programa multiplica el número de horas trabajadas por 85, finalmente ese resultado lo suma al salario ingresado obteniendo así el salario total.
  •          Si es de categoría 4 o cualquier otro valor el programa procede a tomar como salario total al salario ingresado por el usuario ya que los empleados de categoría 4 en adelante no poseen beneficios.
Se imprime el salario total del empleado.

Diagrama de flujo:


Programa en lenguaje C:

/* CABECERA
Nombre: Juan Diego Mantilla
Fecha: 12-Noviembre-2014
Descripción: 
Programa para realizar el calculo del salario de un empleado. El usuario ingresa por       teclado el salario del empleado, el numero de horas extra trabajadas y la categoria del empleado (numeros enteros positivos). El programa evalua con la sentencia switch a que categoria pertenece. 
Si es de categoria 1 el programa procede a evaluar el numero de horas extra tabajadas, si el empleado excede las 30 horas trabajadas el programa suma 1200 al valor de su salario, obteniendo asi el salario total del empleado. Si el numero de horas es menor a 30 el programa multiplica el numero de las horas extras trabajadas por 40, finalmente ese resultado lo suma al salario ingresado obteniendo asi el salario total.
Si es de categoria 2 el programa procede a evaluar el numero de horas extra tabajadas, si el empleado excede las 30 horas trabajadas el programa suma 1500 al valor de su salario, obteniendo asi el salario total del empleado. Si el numero de horas es menor a 30 el programa multiplica el numero de las horas extras trabajadas por 50, finalmente ese resultado lo suma al salario ingresado obteniendo asi el salario total.
Si es de categoria 3 el programa procede a evaluar el numero de horas extra tabajadas, si el empleado excede las 30 horas trabajadas el programa suma 2250 al valor de su salario, obteniendo asi el salario total del empleado. Si el numero de horas es menor a 30 el programa multiplica el numero de las horas extras trabajadas por 85, finalmente ese resultado lo suma al salario ingresado obteniendo asi el salario total.
Si es de categoria 4 o cualquier otro valor el programa procede a tomar como salario total al salario ingresado por el usuario ya que los empleados de categoria 4 en adelante no poseen beneficios.
El programa imprime el salario total del empleado.
*/

#include <stdio.h>
main()
{
int sal, cate, horas, hxv, st;
printf("CALCULO DE SALARIOS SEGUN LAS HORAS EXTRA TRABAJADAS\n\n");
printf("Ingrese el salario del empleado:");
scanf("%d",&sal);
printf("Ingrese el numero de horas extra trabajadas:");
scanf("%d",&horas);
printf("Ingrese la categoria del empleado:");
scanf("%d",&cate);
switch (cate)
{
case 1:
if(horas>30){
st=sal+1200;
}
else{
hxv=horas*40;
st=hxv+sal;
}
break;
case 2:
if(horas>30){
st=sal+1500;
}
else{
hxv=horas*50;
st=hxv+sal;
}
break;
case 3:
if(horas>30){
st=sal+2250;
}
else{
hxv=horas*85;
st=hxv+sal;
}
break;
case 4:
default:
st=sal;
break;
}
printf("El salario del empleado es: %d", st);
getch();
}

CAPTURAS DE PANTALLA:


1 comentario:

  1. Es el trabajo mas ordenado, perfecto y hermoso que he visto jamás.

    ResponderEliminar