• Domingo 22 de Diciembre de 2024, 17:11

Autor Tema:  Informar los datos de una empresa  (Leído 2406 veces)

infolab

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Informar los datos de una empresa
« en: Miércoles 23 de Junio de 2004, 04:42 »
0
necesito ayuda con lo siguiente, ya quede estancado y no se me ocurre como continuar:

 Apartir de los datos de n trabajadores de una empresa,debo ingresar nombre,edad,sueldo,y sexo (M/F), y el programa debe mostrarme cantidad de mujeres,sueldo promedio de hombres,edad promedio de hombres,el nombre y el sueldo del trabajador con mayor sueldo:

  el codigo que alcance a escribir es el sgte:

 program ejer_seis;

 uses
     wincrt;
 var
    c,sum,mas,fem,t,e,sd:integer;
   m,f,s,n:string[20];
   p:real;

    begin
         writeln('ingrese cantidad trabajadores');
         readln(t);
             
             for t:=1 to t do
             
               begin
                    writeln('ingrese el nombre');
                    readln(n);
                    writeln('ingrese la edad');
                    readln(e);
                    writeln('ingrese el sueldo');
                    readln(sd);
                    writeln('ingrese el sexo (M/F)');
                    readln(s);
               end;
                    if (s='f') then
                       begin
                            fem:=t-mas;                    
                       end;            

                     sum:=0;
                     c:=1;
                   
                    if (s='m') then
                       begin
                           
                            sd:=sd+c;
                            c:=c+1;
                       end;
                            p:=(sd/c);
                   
                         

                         writeln('las mujeres son',fem);
                         writeln('el sueldo promedio de los hombres',p:3:1);
                       
end.

gothmog

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
Re: Informar los datos de una empresa
« Respuesta #1 en: Martes 6 de Julio de 2004, 15:48 »
0
La verdad es que está muy confuso tu código. Trata de usar nombres de variables más identificativos, escribir 3 o 4 caracteres más no te va a suponer más que unos míseros segundos y aportarás mucha claridad.

Estaría bien que indicaras cuál va a ser la estrategia de trabajo, porque veo ahí unas restas que no entiendo qué quieres hacer.

Por último, tienes un error de sintaxis, no se puede poner esto:

Código: Text
  1. for t=1 to t do
  2.  

porque estás asignando el valor 1 a la variable t, perdiendo el contenido que tuviera previamente.

akela

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Informar los datos de una empresa
« Respuesta #2 en: Sábado 14 de Agosto de 2004, 20:32 »
0
te recomiendo que utilices listas para la inclusion de todos los datos lo cual es la parte mas importante luego que tengas eso si puedes comenzar a realizar las operaciones que te piden

jimmyg

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Informar los datos de una empresa
« Respuesta #3 en: Viernes 27 de Agosto de 2004, 20:19 »
0
SALUDOS, buenos consejos los de los colegas, usar variables significativas y otra cosa, identar el codigo, que sea mas legible, eso facilita la lectura de un programa en el futuro, es una buena practica, al igual que documentar el codigo.
Bueno, aqui esta tu programa, espero que te sirva:

Código: Text
  1.  
  2. program ejer_seis;
  3.  
  4. {ESTE ES UN CODIGO ULTRA SENCILLO, LOGICAMENTE, SE PUEDE SUPER MEJORAR
  5. PONERLE MARCOS, COLORES, BOTONES, UTILIZAR UN ARCHIVO PARA GUARDAR LOS DATOS
  6. EN FIN.... AL MENOS TE PUEDE SERVIR}
  7.  
  8. uses
  9.   crt;
  10.  
  11. var
  12.  
  13. hombres,mujeres,totaltraba      : integer;
  14. nombre,nombremayor              : string;
  15. sueldo,totalsueldo,sueldomayor  : real;
  16. totalh,totalm,error,tempo,edad  : integer;
  17. sexo,tecla                      : char;
  18.  
  19. {leera el total de trabajadores,
  20. en formato string para poder capturar errores.
  21. TOTRAST = TO tal de TRA bajadores en ST ring}
  22. TOTRAST                    : string;
  23.  
  24.  
  25. {*******************************************************************}
  26. {CONVIERTE A MAYUSCULA UN STRING}
  27. procedure mayusc( var x : string);
  28. var
  29.    i : integer;
  30. begin
  31.   for i := 1 to length(x) do
  32.      x[i] := upcase(x[i]);
  33. end;
  34.  
  35. {*******************************************************************}
  36. {produce un sonidillo, nada mas eso, simple sonidillo}
  37. procedure bip;
  38. begin
  39.    sound(4000);
  40.    delay(100);
  41.    nosound;
  42. end;
  43.  
  44. {*******************************************************************}
  45. {Ubica el string TIRA en la posicion X,Y}
  46. procedure poner(x,y: integer; tira : string);
  47. begin
  48.   gotoxy(x,y);
  49.   write(tira);
  50. end;
  51.  
  52. {**********************************************************}
  53. procedure errormsg;
  54. begin
  55.  window(65,4,79,4);
  56.  write(chr(7));
  57.  textbackground(lightgray);textcolor(red + blink);
  58.  write ('   ERROR   ');
  59.  window(1,1,80,25);
  60.  textbackground(black);textcolor(white);
  61. end;
  62.  
  63.  
  64. {*************************************}
  65. {*           BEGIN PRINCIPAL         *}
  66. {*************************************}
  67.  
  68. begin
  69. while true do
  70.  begin
  71.    repeat
  72.      clrscr;
  73.      textbackground(black);textcolor(white);
  74.      poner(1,1,'ingrese cantidad trabajadores, <0> = salir ');
  75.      {se lee string, para permitir que se digiten caracteres no numericos,
  76.      despues se valida lo digitado}
  77.      readln(tOTRAst);
  78.      val(totrast,totaltraba,error);
  79.         if error <> 0 then
  80.           begin
  81.            {Hay un error, algun caracter del string no se pudo convertir a numero}
  82.            bip;
  83.            errormsg;
  84.            poner(1,3,'Digite un valor numerico.. Presione ENTER para seguir');
  85.            readln;
  86.           end
  87.             else
  88.               if totaltraba = 0 then
  89.                 halt;
  90.      until error = 0;
  91.  
  92.    for tempo := 1 to totaltraba do
  93.        begin
  94.             CLRSCR;
  95.             poner(5,2,'CANTIDAD DE TRABAJADORES A INCLUIR:');
  96.             GOTOXY(43,2);
  97.             WRITE(totaltraba);
  98.             poner(5,3,'INCLUYENDO TRABAJADOR NUMERO:');
  99.             GOTOXY(39,3);
  100.             WRITE(tempo);
  101.  
  102.             poner(3,5,'Nombre:     ');
  103.             poner(3,6,'Edad:       ');
  104.             poner(3,7,'Sueldo:     ');
  105.             poner(3,8,'Sexo (M/F): ');
  106.  
  107.             gotoxy(19,5);
  108.             readln(nombre);
  109.             {pasamos el nombre digitado a mayuscula}
  110.             mayusc(nombre);
  111.             poner(19,5,nombre);
  112.  
  113.             {OJO, AQUI SE DEBE PONER LA RUTINILLA PARA VERIFICAR QUE
  114.             SOLO SE DIGITEN NUMEROS, IGUAL QUE EN CANTIDAD DE TRABAJADORES,
  115.             SE PUEDE HACER UN PROCEDIMIENTO QUE SIMPLIFIQUE EL ASUNTO}
  116.             gotoxy(19,6);
  117.             readln(edad);
  118.  
  119.             {VALIDAR QUE LO DIGITADO SEA EFECTIVAMENTE UN NUMERO}
  120.             gotoxy(19,7);
  121.             readln(sueldo);
  122.  
  123.             repeat
  124.               gotoxy(19,8);
  125.               sexo := readkey;
  126.             until upcase(sexo) in ['F','M'];
  127.             poner(19,8,upcase(sexo));
  128.  
  129.             {ESPERA DE UNOS SEGUNDOS PARA PEDIR EL OTRO NOMBRE}
  130.  
  131.             textbackground(lightgray);textcolor(red);
  132.             PONER(20,12,'ESPERE UN MOMENTO, POR FAVOR');
  133.             textbackground(black);textcolor(white);
  134.             delay(1000);
  135.  
  136.  
  137.             {AQUI VIENEN LOS CALCULOS}
  138.  
  139.             {HAY UNA VARIABLE QUE SE LLAMA TOTALM, TENDRA EL TOTAL DE LAS
  140.             MUJERES O SEA, CADA VEZ QUE SE ELIJA F COMO SEXO, ESA VARIABLE
  141.             DEBE INCREMENTARSE EN UNO}
  142.             if (sexo = 'F') or (sexo = 'f') then
  143.               inc(totalm)
  144.             else
  145.               begin
  146.               {SE DEBE HACER LO MISMO PARA LOS HOMBRES,
  147.               CON EL FIN DE SACAR EL PROMEDIO DE SUELDO}
  148.               inc(totalh);
  149.  
  150.               {SE LLEVA UNA SUMA DE LOS SUELDOS DIGITADOS, SOLO SI
  151.               SON HOMBRES.  ¨MACHISMO? NO SE, ASI DICE EL ENUNCIADO!! JEJE}
  152.               totalsueldo := totalsueldo + sueldo;
  153.               end;
  154.  
  155.             if tempo = 1 then
  156.             {Es el primer trabajador, asi que guardamos los datos que
  157.              pide el enunciado}
  158.               begin
  159.                 nombremayor := nombre;
  160.                 sueldomayor := sueldo;
  161.               end
  162.               else
  163.                begin
  164.                  {NO es el primer trabajador}
  165.                  {Comparamos el sueldo que se digita con el guardado,
  166.                  si el sueldo digitado es mayor que el guardado, actualizamos
  167.                  los datos guardados}
  168.                  if sueldo > sueldomayor then
  169.                    begin
  170.                      nombremayor := nombre;
  171.                      sueldomayor := sueldo;
  172.                    end
  173.               end;
  174.        end;
  175.  
  176.        textbackground(lightgray);textcolor(red + blink);
  177.        PONER(20,12,'  CAPTURA DE DATOS TERMINADA  ');
  178.        textbackground(black);textcolor(white);
  179.  
  180.         poner(3,19,'Total de Trabajadores:');
  181.         poner(3,20,'Cantidad de mujeres:');
  182.         poner(3,21,'Sueldo promedio de los hombres:');
  183.         poner(3,22,'Trabajador con sueldo mayor:');
  184.         poner(3,23,'Sueldo mayor:');
  185.  
  186.         gotoxy(35,19);
  187.         write(totaltraba);
  188.  
  189.         gotoxy(35,20);
  190.         write(totalm);
  191.  
  192.         gotoxy(35,21);
  193.         write(totalsueldo/totalh:12:2);
  194.  
  195.         gotoxy(35,22);
  196.         write(nombremayor);
  197.         gotoxy(35,23);
  198.         write(sueldomayor:12:2);
  199.         gotoxy(35,19);
  200.         write(totaltraba);
  201.          repeat
  202.            poner(15,25,'Presione la tecla ESC para salir o ENTER para seguir');
  203.            tecla := readkey;
  204.          until (tecla = char(13)) or (tecla = char(27));
  205.           if tecla = char(27) then
  206.             halt;
  207. end;
  208. end.
  209.  
  210.  

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Informar los datos de una empresa
« Respuesta #4 en: Viernes 27 de Agosto de 2004, 21:10 »
0
jimmyg:
  Cuando peges tu código es bueno que lo encieres entre los tags:
[CODE*] [/CODE*]
el asterisco no se escribe, lo tuve que poner para que no los tome en serio y se obtenga esto
Código: Text
  1.  
 
o bien uses el boton que está ariba del cuadro de texto que dice CODE.
Asi podes lograr este efecto
 
Código: [Seleccionar]
 
procedure mayusc( var x : string);
var
   i : integer;
begin
   for i := 1 to length(x) do x[i] := upcase(x[i]);
end;
 
 

  :hola:

jimmyg

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Informar los datos de una empresa
« Respuesta #5 en: Viernes 27 de Agosto de 2004, 21:28 »
0
Gracias Eugenio, igoraba eso, es mi primer participacin en este foro! pero listo, saludos a todos desde Costa Rica

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Informar los datos de una empresa
« Respuesta #6 en: Sábado 28 de Agosto de 2004, 01:27 »
0
:D Bienvenido.
Esperamos tu participación.
 :hola: