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.
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


0