Advertisement
damarijsilva

ejer4final

Sep 10th, 2017
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 7.40 KB | None | 0 0
  1. program ejercicio3tp4;
  2. uses crt;
  3. type
  4.   Tproducto = record
  5.     codigo : integer;
  6.     nombre: string [30];
  7.     precio : real;
  8.     tipo : char;
  9.   end;
  10.   Tvector = array[1..100] of Tproducto;
  11.   Tauxiliar = array[1..1] of Tproducto;
  12. var
  13.   v: Tvector;
  14.   n: integer;
  15.   aux: TAuxiliar;
  16.  
  17. procedure modificarProducto (var v: Tvector; n:integer);
  18. var
  19.  c,i : integer;
  20.  t: char;
  21.  b,band: boolean;
  22. begin
  23.   band := false;
  24.  ClrScr;
  25.  write('Codigo del producto que desea modificar?- ');
  26.  readln(c);
  27.  for i := 1 to n do
  28.      begin
  29.       if v[i].codigo = c then
  30.       begin
  31.            band := true;
  32.            gotoxy(5,3);write('Nombre de Producto: ');
  33.            readln(v[i].nombre);
  34.            gotoxy(5,4);write('Precio de Producto: ');
  35.            readln(v[i].precio);
  36.            b:=false;
  37.            repeat
  38.            begin
  39.                 gotoxy(5,5);write('Tipo de Producto: ');
  40.                 readln(t);
  41.                 if(UpCase(t)>='A')and(UpCase(t)<='C')then
  42.                 begin
  43.                      v[i].tipo:=t;
  44.                      b := true;
  45.                      end
  46.                 else
  47.                 begin
  48.                 gotoxy(5,6);writeln('Tipo inexistente');
  49.                 GotoXY(5,5);
  50.                 ClrEol;
  51.                 end;
  52.            end;
  53.            until(b=true);
  54.       end;
  55.       end;
  56.       if band= true then
  57.          begin
  58.          GotoXY(5,6);
  59.          ClrEol;
  60.          gotoxy(2,7);writeln('El producto codigo: ',c,' se ha modificado');
  61.          readkey;
  62.          end
  63.       else
  64.         begin
  65.         gotoxy(1,3);writeln('Producto inexistente');
  66.         readkey;
  67.         end;
  68.  end;
  69.  
  70. procedure mostrarordenado(v:Tvector; n:integer);
  71.    var
  72.      y, i : integer;
  73.    begin
  74.        clrscr;
  75.        gotoxy(2,1);write('Codigo    Nombre     Precio    Tipo');
  76.        y := 3;
  77.        for i := 1 to n do
  78.        begin
  79.           gotoxy(2,y);write(v[i].codigo);
  80.           gotoxy(12,y);write(v[i].nombre);
  81.           gotoxy(22,y);write('$',v[i].precio:4:2);
  82.           gotoxy(36,y);write(v[i].tipo);
  83.           y := y + 1;
  84.        end;
  85.        gotoxy(3,y + 1);write('**** Pulse [Enter] ****');
  86.        readkey;
  87.    end;
  88.  
  89.  
  90. procedure bajaProducto (var v:Tvector; var n:integer);
  91. var
  92.  c,i : integer;
  93.  band : boolean;
  94. begin
  95.   band := false;
  96.   ClrScr;
  97.   writeln('Codigo del producto que desea eliminar?');
  98.   readln(c);
  99.   for i := 1 to n do
  100.       if v[i].codigo = c then
  101.       begin
  102.            band := true;
  103.            v[i]:= v[i+1];
  104.            n:= n-1;
  105.            //fillchar(v[i],sizeof(v[i]),0);
  106.       end;
  107.       if band= true then
  108.          begin
  109.          writeln('El producto codigo: ',c,' se ha eliminado');
  110.          readkey;
  111.          end
  112.       else
  113.           begin
  114.         writeln('Producto inexistente');
  115.         readkey;
  116.           end;
  117. end;
  118.  
  119. Procedure ordenSeleccion( var v: Tvector; n: integer; var aux: Tauxiliar);
  120.  var
  121.    i, j, k: integer;
  122.  begin
  123.     for i:=1 to n-1 do
  124.       begin
  125.         k:= i;
  126.         for j:=(i+1) to n do
  127.           if UpCase(v[j].nombre )< UpCase(v[i].nombre) then
  128.            begin
  129.              k:=j;
  130.              aux[1]:= v[j];
  131.              v[k]:= v[i];
  132.              v[i]:= aux[1];
  133.            end;
  134.  
  135.       end;
  136.     mostrarordenado(v,n);
  137.  end;
  138.  
  139.  
  140. Procedure ordenInsercion(var v: Tvector; n: integer;var aux: Tauxiliar);
  141. var
  142.   j, k: integer;
  143.   y: real;
  144.   found: boolean;
  145. begin
  146.     for j:=2 to n do
  147.       begin
  148.         y:= v[j].precio;
  149.         k:= j-1;
  150.         found := false;
  151.         while (k>=1) and (Not found) do
  152.          if(y>v[k].precio) then
  153.          begin
  154.            aux[1]:= v[k+1];
  155.            v[k+1]:= v[k];
  156.            v[k]:= aux[1];
  157.            k:= k-1;
  158.           end
  159.         else
  160.         found:= true;
  161.       end;
  162.     mostrarordenado(v,n);
  163. end;
  164.  
  165. procedure mostrarProductos(v:Tvector; n:integer);
  166.    var
  167.      y, i : integer;
  168.      tip : char;
  169.    begin
  170.        clrscr;
  171.        writeln('Ingrese un tipo: ');
  172.        readln(tip);
  173.        clrscr;
  174.        gotoxy(2,1);write('Codigo    Nombre     Precio    Tipo');
  175.        y := 3;
  176.        for i := 1 to n do
  177.        begin
  178.          if(v[i].tipo = tip)then
  179.            begin
  180.           gotoxy(2,y);write(v[i].codigo);
  181.           gotoxy(12,y);write(v[i].nombre);
  182.           gotoxy(22,y);write('$',v[i].precio:4:2);
  183.           gotoxy(36,y);write(v[i].tipo);
  184.           y := y + 1;
  185.  
  186.            end;
  187.        end;
  188.        gotoxy(3,y + 1);write('**** Pulse [Enter] ****');
  189.        readkey;
  190.    end;
  191.  
  192. function buscar(v:Tvector; n:integer; c:integer):boolean;
  193. var
  194.   i:integer;
  195.   band: boolean;
  196. begin
  197.     band:=false;
  198.     for i:=1 to n do
  199.     begin
  200.       if(v[i].codigo = c)then
  201.         band :=true;
  202.       end;
  203.     buscar:=band;
  204. end;
  205.  
  206.   procedure nuevoProducto(var p: Tproducto);
  207.   var
  208.     c:integer;
  209.     t: char;
  210.     b: boolean;
  211.   begin
  212.     b:=false;
  213.     clrscr;
  214.     with p do
  215.     begin
  216.       gotoxy(10,1);writeln('NUEVO PRODUCTO');
  217.       repeat
  218.         begin
  219.         gotoxy(5,3);write('Codigo de Producto: ');
  220.         readln(c);
  221.         if(buscar(v,n,c)=false)then
  222.            begin
  223.                 codigo:=c;
  224.                 b := true;
  225.            end
  226.         else
  227.             begin
  228.             gotoxy(5,4);writeln('codigo repetido');
  229.             GotoXY(5,3);
  230.             ClrEol;
  231.             end;
  232.         end;
  233.       until(b=true);
  234.       if(codigo=0)then
  235.         Exit;
  236.       gotoxy(5,4);write('Nombre de Producto: ');
  237.       readln(nombre);
  238.       gotoxy(5,5);write('Precio de Producto: ');
  239.       readln(precio);
  240.       b:=false;
  241.       repeat
  242.         begin
  243.         gotoxy(5,6);write('Tipo de Producto: ');
  244.         readln(t);
  245.         if(UpCase(t)>='A')and(UpCase(t)<='C')then
  246.            begin
  247.                 tipo:=t;
  248.                 b := true;
  249.            end
  250.         else
  251.             gotoxy(5,7);writeln('Tipo inexistente');
  252.             GotoXY(5,6);
  253.             ClrEol;
  254.         end;
  255.        until(b=true);
  256.     end;
  257.   end;
  258.  
  259.  
  260. procedure altaProductos(var v: Tvector; var n:integer);
  261. var
  262.   p: Tproducto;
  263.   i: integer;
  264. begin
  265.      n := 0;
  266.      i:= 1;
  267.      repeat
  268.        begin
  269.           nuevoProducto(p);
  270.           if(p.codigo <> 0)then
  271.             begin
  272.                   v[i] := p;
  273.                   n := n+1;
  274.                   i := i+1;
  275.             end;
  276.        end;
  277.      Until(p.codigo = 0);
  278. end;
  279.  
  280. procedure Menu();
  281. var
  282.       opc:integer;
  283.     begin
  284.       repeat
  285.             clrscr;
  286.             gotoxy(5,1);writeln('************MENU GENERAL*************');
  287.             gotoxy(5,2);writeln('Cargar Productos..................[1]');
  288.             gotoxy(5,3);writeln('Mostrar Productos por un tipo.....[2]');
  289.             gotoxy(5,4);writeln('Productos ordenados p/nombre......[3]');
  290.             gotoxy(5,5);writeln('Productos de mayor precio.........[4]');
  291.             gotoxy(5,6);writeln('Eliminar producto.................[5]');
  292.             gotoxy(5,7);writeln('Modificar producto................[6]');
  293.             gotoxy(5,8);writeln('SALIR.............................[7]');
  294.             gotoxy(5,10);write('Escoja una opcion: ');
  295.             readln(opc);
  296.             case opc of
  297.             1: altaProductos(v,n);
  298.             2: mostrarProductos(v,n);
  299.             3: ordenSeleccion(v,n,aux);
  300.             4: ordenInsercion(v,n,aux);
  301.             5: bajaProducto(v,n);
  302.             6: modificarProducto(v,n);
  303.             else
  304.               writeln('OpciΓ³n Incorrecta');
  305.             end;
  306.       until opc = 7 ;
  307. end;
  308.  
  309. begin
  310.   Menu();
  311. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement