program ejer_seis;
{ESTE ES UN CODIGO ULTRA SENCILLO, LOGICAMENTE, SE PUEDE SUPER MEJORAR
PONERLE MARCOS, COLORES, BOTONES, UTILIZAR UN ARCHIVO PARA GUARDAR LOS DATOS
EN FIN.... AL MENOS TE PUEDE SERVIR}
uses
crt;
var
hombres,mujeres,totaltraba : integer;
nombre,nombremayor : string;
sueldo,totalsueldo,sueldomayor : real;
totalh,totalm,error,tempo,edad : integer;
sexo,tecla : char;
{leera el total de trabajadores,
en formato string para poder capturar errores.
TOTRAST = TO tal de TRA bajadores en ST ring}
TOTRAST : string;
{*******************************************************************}
{CONVIERTE A MAYUSCULA UN STRING}
procedure mayusc( var x : string);
var
i : integer;
begin
for i := 1 to length(x) do
x[i] := upcase(x[i]);
end;
{*******************************************************************}
{produce un sonidillo, nada mas eso, simple sonidillo}
procedure bip;
begin
sound(4000);
delay(100);
nosound;
end;
{*******************************************************************}
{Ubica el string TIRA en la posicion X,Y}
procedure poner(x,y: integer; tira : string);
begin
gotoxy(x,y);
write(tira);
end;
{**********************************************************}
procedure errormsg;
begin
window(65,4,79,4);
write(chr(7));
textbackground(lightgray);textcolor(red + blink);
write (' ERROR ');
window(1,1,80,25);
textbackground(black);textcolor(white);
end;
{*************************************}
{* BEGIN PRINCIPAL *}
{*************************************}
begin
while true do
begin
repeat
clrscr;
textbackground(black);textcolor(white);
poner(1,1,'ingrese cantidad trabajadores, <0> = salir ');
{se lee string, para permitir que se digiten caracteres no numericos,
despues se valida lo digitado}
readln(tOTRAst);
val(totrast,totaltraba,error);
if error <> 0 then
begin
{Hay un error, algun caracter del string no se pudo convertir a numero}
bip;
errormsg;
poner(1,3,'Digite un valor numerico.. Presione ENTER para seguir');
readln;
end
else
if totaltraba = 0 then
halt;
until error = 0;
for tempo := 1 to totaltraba do
begin
CLRSCR;
poner(5,2,'CANTIDAD DE TRABAJADORES A INCLUIR:');
GOTOXY(43,2);
WRITE(totaltraba);
poner(5,3,'INCLUYENDO TRABAJADOR NUMERO:');
GOTOXY(39,3);
WRITE(tempo);
poner(3,5,'Nombre: ');
poner(3,6,'Edad: ');
poner(3,7,'Sueldo: ');
poner(3,8,'Sexo (M/F): ');
gotoxy(19,5);
readln(nombre);
{pasamos el nombre digitado a mayuscula}
mayusc(nombre);
poner(19,5,nombre);
{OJO, AQUI SE DEBE PONER LA RUTINILLA PARA VERIFICAR QUE
SOLO SE DIGITEN NUMEROS, IGUAL QUE EN CANTIDAD DE TRABAJADORES,
SE PUEDE HACER UN PROCEDIMIENTO QUE SIMPLIFIQUE EL ASUNTO}
gotoxy(19,6);
readln(edad);
{VALIDAR QUE LO DIGITADO SEA EFECTIVAMENTE UN NUMERO}
gotoxy(19,7);
readln(sueldo);
repeat
gotoxy(19,8);
sexo := readkey;
until upcase(sexo) in ['F','M'];
poner(19,8,upcase(sexo));
{ESPERA DE UNOS SEGUNDOS PARA PEDIR EL OTRO NOMBRE}
textbackground(lightgray);textcolor(red);
PONER(20,12,'ESPERE UN MOMENTO, POR FAVOR');
textbackground(black);textcolor(white);
delay(1000);
{AQUI VIENEN LOS CALCULOS}
{HAY UNA VARIABLE QUE SE LLAMA TOTALM, TENDRA EL TOTAL DE LAS
MUJERES O SEA, CADA VEZ QUE SE ELIJA F COMO SEXO, ESA VARIABLE
DEBE INCREMENTARSE EN UNO}
if (sexo = 'F') or (sexo = 'f') then
inc(totalm)
else
begin
{SE DEBE HACER LO MISMO PARA LOS HOMBRES,
CON EL FIN DE SACAR EL PROMEDIO DE SUELDO}
inc(totalh);
{SE LLEVA UNA SUMA DE LOS SUELDOS DIGITADOS, SOLO SI
SON HOMBRES. ¨MACHISMO? NO SE, ASI DICE EL ENUNCIADO!! JEJE}
totalsueldo := totalsueldo + sueldo;
end;
if tempo = 1 then
{Es el primer trabajador, asi que guardamos los datos que
pide el enunciado}
begin
nombremayor := nombre;
sueldomayor := sueldo;
end
else
begin
{NO es el primer trabajador}
{Comparamos el sueldo que se digita con el guardado,
si el sueldo digitado es mayor que el guardado, actualizamos
los datos guardados}
if sueldo > sueldomayor then
begin
nombremayor := nombre;
sueldomayor := sueldo;
end
end;
end;
textbackground(lightgray);textcolor(red + blink);
PONER(20,12,' CAPTURA DE DATOS TERMINADA ');
textbackground(black);textcolor(white);
poner(3,19,'Total de Trabajadores:');
poner(3,20,'Cantidad de mujeres:');
poner(3,21,'Sueldo promedio de los hombres:');
poner(3,22,'Trabajador con sueldo mayor:');
poner(3,23,'Sueldo mayor:');
gotoxy(35,19);
write(totaltraba);
gotoxy(35,20);
write(totalm);
gotoxy(35,21);
write(totalsueldo/totalh:12:2);
gotoxy(35,22);
write(nombremayor);
gotoxy(35,23);
write(sueldomayor:12:2);
gotoxy(35,19);
write(totaltraba);
repeat
poner(15,25,'Presione la tecla ESC para salir o ENTER para seguir');
tecla := readkey;
until (tecla = char(13)) or (tecla = char(27));
if tecla = char(27) then
halt;
end;
end.