Advertisement
crispm50

ejemploParcialMeto_ordenacion_cristianballesteros

Sep 21st, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 4.41 KB | None | 0 0
  1. program ejemploPacial;
  2. uses crt;
  3. //van los registros , los vectores matrices,
  4. type
  5.   Fecha=record
  6.      dia:integer;
  7.      mes:integer;
  8.      anio:integer
  9.   end;
  10.  
  11.   Empleado=record
  12.      legajo:integer;
  13.      nombre:String[20];
  14.      sueldo:real;
  15.      fechaIngreso:Fecha
  16.   end;
  17.  
  18.   tvEmpleados=array[1..100] of Empleado;  //es el vector
  19.  
  20.  
  21. //declaran las var del algoritmo principal
  22. var
  23.   opc,n,legajoBus,pos:integer;
  24.   resp:char;
  25.   v:tvEmpleados;
  26.  
  27.  
  28.  
  29.  
  30. //procedimientos y funciones
  31. procedure menu(var opc:integer); //por referencia cambia .. var
  32. begin
  33.      writeln('1-cargar el vector de empleados');
  34.      writeln('2-mostrar vector de empleado');
  35.      writeln('3-buscar un empleado por legado');
  36.      writeln('4-ordenar el vector en forma CRECIENTE por SUELDO');
  37.      writeln('ingrese una opcion: ');
  38.      readln(opc);
  39.  
  40. end;
  41.  
  42. procedure cargarUnEmpleado(var e:Empleado );
  43. begin
  44.      writeln('*********************');
  45.      WriteLn('ingrese legajo:');
  46.      readln(e.legajo);
  47.      WriteLn('ingrese nombre:');
  48.      readln(e.nombre);
  49.      WriteLn('ingrese sueldo:');
  50.      readln(e.sueldo);
  51.      WriteLn('ingrese dia de ingreso:');
  52.      readln(e.fechaIngreso.dia);
  53.      WriteLn('ingrese MES de ingreso:');
  54.      readln(e.fechaIngreso.mes);
  55.      WriteLn('ingrese ANIO de ingreso:');
  56.      readln(e.fechaIngreso.anio);
  57. end;
  58. procedure mostrarUnEmpleado( e:Empleado);
  59. begin
  60.      writeln('*********************');
  61.      writeln('LEGAJO= ', e.legajo);
  62.      writeln('NOMBRE=', e.nombre);
  63.      writeln('SUELDO=', e.sueldo:4:2);
  64.      writeln('FECHA ING DIA=', e.fechaIngreso.dia);
  65.      writeln('FECHA ING MES=', e.fechaIngreso.mes);
  66.      writeln('FECHA ING ANIO=', e.fechaIngreso.anio);
  67. end;
  68.  
  69. procedure cargarVectorDeEmpleados(var v:tvEmpleados;var N:integer);
  70. var
  71.   i:integer;
  72. begin
  73.      writeln('Ing la cantida de empleado N: ');
  74.      readln(N);
  75.      for i:=1 to N do
  76.      begin
  77.           cargarUnEmpleado(v[i]);
  78.      end;
  79. end;
  80.  
  81. procedure mostrarVectorDeEmpleados( v:tvEmpleados; N:integer);
  82. var
  83.   i:integer;
  84. begin
  85.      for i:=1 to N do
  86.      begin
  87.           mostrarUnEmpleado(v[i]);
  88.      end;
  89. end;
  90.  
  91. function buscarXLegajo(v:tvEmpleados;n:integer; legajoBuscado: integer): integer;
  92. var
  93.   pos,i:integer;
  94.  
  95. begin
  96.      pos:=0;
  97.      for i:=1 to n do
  98.      begin
  99.           if(v[i].legajo = legajoBuscado) then
  100.           begin
  101.                pos:=i;
  102.           end;
  103.      end;
  104.  
  105.      buscarXLegajo:=pos;
  106. end;
  107.  
  108. Procedure Swap(Var x, y : Empleado);
  109. Var
  110.   //este es le procedimiento de intercambio intercambio 2 registro personas
  111.    aux: Empleado;
  112. Begin
  113.   aux:= x;
  114.   x:= y;
  115.   y:= aux;
  116. End;
  117.  
  118.  
  119. Procedure BubbleSortCreciente(Var X:tvEmpleados; N : Integer);
  120. Var
  121.    i, j : Integer;
  122. Begin
  123.   //ordenacion por metodo de burbuja
  124.   For i := 2 To N Do
  125.   Begin
  126.     For j := N Downto i Do
  127.     begin
  128.       //aqui elijo el campo por el que quiero ordenar  < Creciente
  129.       If (X[j].sueldo < X[j - 1].sueldo) Then//esta parte es importante para ver si es creciente o decreciente  ORDEN POR SUELDO
  130.         Swap(X[j - 1], X[j]);//intercambio
  131.     end;
  132.   End;
  133.   mostrarVectorDeEmpleados(X,N);
  134. End;
  135.  
  136.  
  137.  
  138.  
  139. //el principal
  140. begin
  141.  
  142.  
  143.      repeat
  144.           ClrScr;//limpio la pantalla
  145.            menu(opc);
  146.            case opc of
  147.                 1:cargarVectorDeEmpleados(v,n);
  148.                 2:mostrarVectorDeEmpleados(v,n);
  149.                 3:begin
  150.                   writeln('ING un legajo que desea buscar: ');
  151.                   readln(legajoBus);    //legajoBus es el legajo que el usuario desea buscar...
  152.                   pos:=buscarXLegajo(v,n,legajoBus); //capturo el resultado de la busqueda en la variable pos
  153.                   if(pos<>0)then      //evaluamos la variables pos si es <>0 entonces se encontro el legajo , en caso contranio no
  154.                      begin
  155.                       writeln('LEGAJO ENCONTRADO EN POSICION: ', pos);
  156.                      end
  157.                   else
  158.                       begin
  159.                            writeln('LEGANO NO ENCONTRADO ERROR......');
  160.                       end;
  161.  
  162.                   end;
  163.                   4:BubbleSortCreciente(v,n);     //ordenamos en forma creciente por legajo .. ej.. .100 101  102
  164.  
  165.  
  166.  
  167.  
  168.            end;
  169.  
  170.           writeln('DESEA CONTINUAR S/N: ');   //la repeticion es apedido del operador
  171.           readln(resp);
  172.  
  173.      until (resp='N')or(resp='n');
  174.      readKey;         //hace una pausa a la ejecucion y tiene que estar..
  175.  
  176. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement