Diseño de un algoritmo, definir pre y post condición del problema.

Iniciado por carlosbayona, 5 Julio 2019, 00:18 AM

0 Miembros y 1 Visitante están viendo este tema.

carlosbayona

Hola a todos amigos, necesito su ayuda
Estoy realizando el siguiente ejercicio
Se requiere calcular e imprimir el pago de 102 trabajadores que laboran en la Cía. GACMAN. Los datos que se leerán serán los siguientes: a) El tipo de trabajador.  1.- Obrero.  2.- Empleado. b) Las horas trabajadas. c) El sueldo por hora. Para calcular los pagos se debe considerar lo siguiente: - Los obreros pagan 10 % de impuesto. - Los empleados pagan 10 % de impuesto. - Los trabajadores (obreros y empleados) que reciban un pago menor de 100,000 Bs no pagan impuesto. - Al final se deberá imprimir el total a pagar tanto a los trabajadores como a los empleados. La información solicitada deberá presentarse a través de dos (2) reportes o informes; el primero que contenga el total a pagar a los empleados, ver reporte 1, y el segundo contentivo del total a pagar a los obreros, ver reporte 2, ambos mostrados a continuación.

G A C M A N C.A. Reporte de Pago Impuestos (Empleados) Departamento: Recursos Humanos Total con Impuesto BS. XXXXXX,xx Total Exentos BS. XXXXXX,xx Total a Pagar Bs. XXXXXX,xx Reporte 1

G A C M A N C.A. Reporte de Pago Impuestos (Obreros) Departamento: Recursos Humanos Total con Impuesto BS. XXXXXX,xx Total Exentos BS. XXXXXX,xx Total a Pagar Reporte 2 Bs. XXXXXX,xx. He hecho lo siguiente;

Variables
Ht, sh, ttrab, sueldo, totalap, Totaltra
Si Mientras n<102
haga Imprimir
'digite horas trabajadas
Leer Ht
Imprimir 'digite el sueldo de la hora'
Sueldo=sh*ht
Si Sueldo<100000
entonces Totalpa = sueldo
Sino Totalpa=sueldo+ (sueldo*0.10)
Totaltra=totaltra+totalpa
N=n+1
Fin mientras Imprimir Totaltr
Fin
Traducido a lenguaje pascal quedaría así.
uses crt;
Var
   ht,n,tope:integer;
   sh: Real;
   sueldo: Real;
   totalpa: Real;
   totaltra: Real;
Begin
   tope := 3;
   totaltra:=0;
   for n:=1 to tope do begin
      WriteLn('Digite horas trabajadas: ');
      ReadLn(ht);
      WriteLn('Digite sueldo por hora: ');
      ReadLn(sh);
      sueldo := sh*ht;
      If sueldo<100000 Then
         totalpa := sueldo
      Else
         totalpa := sueldo+(sueldo*0.10);

      totaltra := totaltra+totalpa;
   End;
   WriteLn(totaltra:4:2);
End...!
La ayuda que necesito es definir cuales son las pre y post condiciones del problema en lenguaje de predicados,  y las particiones del mismo, ayudenme por favor!!