Advertisement
damarijsilva

ejer1tp6

Sep 25th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 4.92 KB | None | 0 0
  1. program ejercicio1tp6;
  2. uses crt;
  3. type
  4.   TventaLote = record
  5.     numero: integer;
  6.     nombre: String[30];
  7.     costo: real;
  8.   end;
  9.   Tvector = array[1..100] of TventaLote;
  10.   Tauxiliar = array[1..1] of TventaLote;
  11. var
  12.   v1: Tvector;
  13.   n1: integer;
  14.   v2: Tvector;
  15.   n2: integer;
  16.   v3: Tvector;
  17.   n3: integer;
  18.   aux: Tauxiliar;
  19.  
  20. Function OrdenarXCoste( var v: Tvector; n: integer; var aux: Tauxiliar):Tvector;
  21.     var
  22.       i, j, k: integer;
  23.     begin
  24.        for i:=1 to n-1 do
  25.          begin
  26.            k:= i;
  27.            for j:=(i+1) to n do
  28.              if (v[j].costo)>(v[i].costo) then
  29.               begin
  30.                 k:=j;
  31.                 aux[1]:= v[j];
  32.                 v[k]:= v[i];
  33.                 v[i]:= aux[1];
  34.               end;
  35.          end;
  36.          OrdenarXCoste:=v;
  37.    end;
  38.  
  39. procedure mostrar(v:Tvector; n:integer);
  40.    var
  41.      y, i : integer;
  42.    begin
  43.        //clrscr;
  44.        gotoxy(2,2);write('Numero   Nombre     Costo ');
  45.        y := 4;
  46.        for i := 1 to n do
  47.        begin
  48.           gotoxy(2,y);write(v[i].numero);
  49.           gotoxy(12,y);write(v[i].nombre);
  50.           gotoxy(22,y);write('$',v[i].costo:3:2);
  51.           y := y + 1;
  52.        end;
  53.        gotoxy(3,y + 1);write('**** next[enter] ****');
  54.        readkey;
  55.    end;
  56.  
  57. Function Fusionar(var v3:Tvector; var n3:integer; v1: Tvector; v2: Tvector; n1:integer; n2:integer ):Tvector;
  58. var
  59.   i, j, k,z:integer;
  60. begin
  61.  i:= 1;
  62.  j:= 1;
  63.  k:= 1;
  64.  while((i<=n1) and (j<=n2))do
  65.  begin
  66.         if(v1[i].costo > v2[j].costo)then
  67.            begin
  68.                 v3[k] := v1[i];
  69.                 i := i+1;
  70.            end
  71.         else
  72.             begin
  73.                  v3[k] := v2[j];
  74.                  j:= j+1;
  75.             end;
  76.   k:= k+1;
  77.  end;
  78.  if (i>n1) then
  79.     begin
  80.          for z:=j to n2 do
  81.            begin
  82.                 v3[k]:=v2[z];
  83.                 k:= k+1;
  84.            end;
  85.     end
  86.  else
  87.      begin
  88.           for z:=i to n1 do
  89.             begin
  90.                  v3[k]:=v1[z];
  91.                  k:= k+1;
  92.             end;
  93.      end;
  94.  n3:= n1+n2;
  95.  Fusionar:=v3;
  96. end;
  97.  
  98. function buscarN(v:Tvector; n:integer; c:integer):boolean;
  99.     var
  100.       i:integer;
  101.       band: boolean;
  102.     begin
  103.          i:=1;
  104.         band:=false;
  105.         while((i<=n)and(band=false))do
  106.           begin
  107.                if(v[i].numero = c)then
  108.                       band :=true;
  109.                i:=i+1;
  110.           end;
  111.         buscarN:=band;
  112. end;
  113.  
  114.  
  115. procedure nuevaVenta(var l: TventaLote; i:integer; v:Tvector;n:integer);
  116.   var
  117.     num:integer;
  118.     b: boolean;
  119.   begin
  120.     clrscr;
  121.     with l do
  122.     begin
  123.       b:=false;
  124.       gotoxy(10,1);writeln('VENTA N',i);
  125.       repeat
  126.         begin
  127.         gotoxy(5,3);write('Numero de venta: ');
  128.         readln(num);
  129.         if(buscarN(v,n,num)=false)then
  130.            begin
  131.                 numero:=num;
  132.                 b := true;
  133.            end
  134.         else
  135.             begin
  136.             gotoxy(5,4);write('numero repetido en la misma lista');
  137.             GotoXY(5,3);
  138.             ClrEol;
  139.             end;
  140.         end;
  141.       until(b=true);
  142.       GotoXY(5,4);
  143.             ClrEol;
  144.       gotoxy(5,4);write('Nombre: ');
  145.       readln(nombre);
  146.       gotoxy(5,5);write('Costo: ');
  147.       readln(costo);
  148.     end;
  149.   end;
  150.  
  151.  
  152.  
  153. procedure cargarVentas(var v1: Tvector; var v2: Tvector; var n1:integer; var n2:integer);
  154.  var
  155. i,j: integer;
  156. begin
  157.  gotoxy(5,9);write('Cantidad de ventas para la LISTA 1? ');
  158.  readln(n1);
  159.  for i:= 1 to n1 do
  160.     nuevaVenta(v1[i],i,v1,n1);
  161.  clrscr;
  162.  write('Cantidad de ventas para la LISTA 2? ');
  163.  readln(n2);
  164.  for j:= 1 to n2 do
  165.     nuevaVenta(v2[j],j,v2,n2);
  166. end;
  167.  
  168.  
  169. procedure menu();
  170.     var
  171.       opc:integer;
  172.     begin
  173.       repeat
  174.             clrscr;
  175.             gotoxy(5,1);writeln('************MENU GENERAL*************');
  176.             gotoxy(5,2);writeln('Cargar ventas..............[1]');
  177.             gotoxy(5,3);writeln('Mostrar ventas.............[2]');
  178.             gotoxy(5,4);writeln('Ordenar y fusionar ventas..[3]');
  179.             gotoxy(5,5);writeln('SALIR......................[4]');
  180.             gotoxy(5,7);write('Escoja una opcion: ');
  181.             readln(opc);
  182.             case opc of
  183.             1: cargarVentas(v1,v2,n1,n2);
  184.             2:begin
  185.                    clrscr;
  186.                    gotoxy(2,1);write('    **** LISTA 1****     ');
  187.                    mostrar(OrdenarXCoste(v1,n1,aux),n1);
  188.                    clrscr;
  189.                    gotoxy(2,1);write('    **** LISTA 2****     ');
  190.                    mostrar(OrdenarXCoste(v2,n2,aux),n2);
  191.               end;
  192.             3:begin
  193.                    clrscr;
  194.                    gotoxy(2,1);write(' **** LISTAS FUSIONADAS****  ');
  195.                    mostrar(Fusionar(v3,n3,OrdenarXCoste(v1,n1,aux),OrdenarXCoste(v2,n2,aux),n1,n2),n3)
  196.                end
  197.             else
  198.               writeln('Opción Incorrecta');
  199.             end;
  200.       until opc = 4 ;
  201. end;
  202.  
  203. begin
  204.   menu();
  205. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement