Pascal/Turbo Pascal - No encuentro el error

 
Vista:

No encuentro el error

Publicado por juan (83 intervenciones) el 17/08/2007 17:44:00
Hola que tal, hice un programa que calcula el sueldo de los empleados, se le pide al empleado nombre, sueldo básico. antiguedad y cantidad de hijos.
Si el empleado no tiene antiguedad o hijos el valor ingresado en cada caso es cero. El sueldo del empleado se obtiene sumando el básico un plus de 15% del sueldo básico si tiene 3 o mas hijos, y un plus por antiguedad que es de 2 a 9 años, 20% del sueldo básico, de 5 a 8 años 40 %, 9 a 12 60% y 13 o mas 80%. Hay que mostrar el nombre de cada empleado al final y el sueldo a cobrar, y al final de todo el programa el total que abona la eempresa en concepto de sueldos, pero, los empleados con mas de 3 hijos no dan problemas con el sueldo final, dan lo que tendria que dar, pero los que tienen menos de 3 sale un sueldo erroneo, lo raro es que sale erroneo cuando lo ingreso despues de algun empleado que tiene mas de 3 hijos, debo estar acarreando algun valor que se suma al empleado que sigue, no se, ese es el problema y me esta volviendo loco, les agradeceria que me ayuden, un saludo.

Program ej2S2;

Type Str30=String[30];

var TotSueldos,Basico,PorcHijos,PorcAntig,SueldoFinal:real;
Nombre:str30;
Antiguedad,CantHijos,i:byte;

Begin
TotSueldos:=0;
SueldoParcial:=0;
for i:=1 to 3 do
begin
writeln('Ingrese el nombre y apellido del empleado: ');
readln(nombre);
writeln('Ingrese el sueldo b sico del empleado');
readln(Basico);
Writeln('Ingrese la antiguedad del empleado: ');
readln(antiguedad);
writeln('Ingrese la cantidad de hijos del empleado: ');
readln(canthijos);
SueldoParcial:=Basico;

If CantHijos>=3
then
begin
PorcHijos:=(15*basico)/100;
end;

case Antiguedad of
2..4:
PorcAntig:=(20*basico)/100;

5..8:
PorcAntig:=(40*basico)/100;

9..12:
PorcAntig:=(60*basico)/100;

13..99:
PorcAntig:=(80*basico)/100;

end;

SueldoFinal:=basico+PorcHijos+PorcAntig;

TotSueldos:=TotSueldos+SueldoFinal;

writeln('Al empleado ',Nombre,' le corresponde un sueldo de: $',SueldoFinal:5:3);

end;

writeln('El total que abona la empresa en concepto de sueldos es: $',TotSueldos:5:3);
readln
end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:No encuentro el error

Publicado por Diego Romero (996 intervenciones) el 17/08/2007 19:15:50
Así es. Inmediatamente después del write('Al empeado..." la variable SueldoParcial deben volver a cero ya que ha terminado el cálculo para ese empleado. Y además, ¿qué pasa con la variable PorcHijos si el if es falso?, me parece que debe ir a cero en ese caso también, porque sino estarías arrastrando el resultado del cálculo en el siguiente empleado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar