Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program ejercicio3tp4;
- uses crt;
- type
- Tproducto = record
- codigo : integer;
- nombre: string [30];
- precio : real;
- tipo : char;
- end;
- Tvector = array[1..100] of Tproducto;
- Tauxiliar = array[1..1] of Tproducto;
- var
- v: Tvector;
- n: integer;
- aux: TAuxiliar;
- procedure modificarProducto (var v: Tvector; n:integer);
- var
- c,i : integer;
- t: char;
- b,band: boolean;
- begin
- band := false;
- ClrScr;
- write('Codigo del producto que desea modificar?- ');
- readln(c);
- for i := 1 to n do
- begin
- if v[i].codigo = c then
- begin
- band := true;
- gotoxy(5,3);write('Nombre de Producto: ');
- readln(v[i].nombre);
- gotoxy(5,4);write('Precio de Producto: ');
- readln(v[i].precio);
- b:=false;
- repeat
- begin
- gotoxy(5,5);write('Tipo de Producto: ');
- readln(t);
- if(UpCase(t)>='A')and(UpCase(t)<='C')then
- begin
- v[i].tipo:=t;
- b := true;
- end
- else
- begin
- gotoxy(5,6);writeln('Tipo inexistente');
- GotoXY(5,5);
- ClrEol;
- end;
- end;
- until(b=true);
- end;
- end;
- if band= true then
- begin
- GotoXY(5,6);
- ClrEol;
- gotoxy(2,7);writeln('El producto codigo: ',c,' se ha modificado');
- readkey;
- end
- else
- begin
- gotoxy(1,3);writeln('Producto inexistente');
- readkey;
- end;
- end;
- procedure mostrarordenado(v:Tvector; n:integer);
- var
- y, i : integer;
- begin
- clrscr;
- gotoxy(2,1);write('Codigo Nombre Precio Tipo');
- y := 3;
- for i := 1 to n do
- begin
- gotoxy(2,y);write(v[i].codigo);
- gotoxy(12,y);write(v[i].nombre);
- gotoxy(22,y);write('$',v[i].precio:4:2);
- gotoxy(36,y);write(v[i].tipo);
- y := y + 1;
- end;
- gotoxy(3,y + 1);write('**** Pulse [Enter] ****');
- readkey;
- end;
- procedure bajaProducto (var v:Tvector; var n:integer);
- var
- c,i : integer;
- band : boolean;
- begin
- band := false;
- ClrScr;
- writeln('Codigo del producto que desea eliminar?');
- readln(c);
- for i := 1 to n do
- if v[i].codigo = c then
- begin
- band := true;
- v[i]:= v[i+1];
- n:= n-1;
- //fillchar(v[i],sizeof(v[i]),0);
- end;
- if band= true then
- begin
- writeln('El producto codigo: ',c,' se ha eliminado');
- readkey;
- end
- else
- begin
- writeln('Producto inexistente');
- readkey;
- end;
- end;
- Procedure ordenSeleccion( var v: Tvector; n: integer; var aux: Tauxiliar);
- var
- i, j, k: integer;
- begin
- for i:=1 to n-1 do
- begin
- k:= i;
- for j:=(i+1) to n do
- if UpCase(v[j].nombre )< UpCase(v[i].nombre) then
- begin
- k:=j;
- aux[1]:= v[j];
- v[k]:= v[i];
- v[i]:= aux[1];
- end;
- end;
- mostrarordenado(v,n);
- end;
- Procedure ordenInsercion(var v: Tvector; n: integer;var aux: Tauxiliar);
- var
- j, k: integer;
- y: real;
- found: boolean;
- begin
- for j:=2 to n do
- begin
- y:= v[j].precio;
- k:= j-1;
- found := false;
- while (k>=1) and (Not found) do
- if(y>v[k].precio) then
- begin
- aux[1]:= v[k+1];
- v[k+1]:= v[k];
- v[k]:= aux[1];
- k:= k-1;
- end
- else
- found:= true;
- end;
- mostrarordenado(v,n);
- end;
- procedure mostrarProductos(v:Tvector; n:integer);
- var
- y, i : integer;
- tip : char;
- begin
- clrscr;
- writeln('Ingrese un tipo: ');
- readln(tip);
- clrscr;
- gotoxy(2,1);write('Codigo Nombre Precio Tipo');
- y := 3;
- for i := 1 to n do
- begin
- if(v[i].tipo = tip)then
- begin
- gotoxy(2,y);write(v[i].codigo);
- gotoxy(12,y);write(v[i].nombre);
- gotoxy(22,y);write('$',v[i].precio:4:2);
- gotoxy(36,y);write(v[i].tipo);
- y := y + 1;
- end;
- end;
- gotoxy(3,y + 1);write('**** Pulse [Enter] ****');
- readkey;
- end;
- function buscar(v:Tvector; n:integer; c:integer):boolean;
- var
- i:integer;
- band: boolean;
- begin
- band:=false;
- for i:=1 to n do
- begin
- if(v[i].codigo = c)then
- band :=true;
- end;
- buscar:=band;
- end;
- procedure nuevoProducto(var p: Tproducto);
- var
- c:integer;
- t: char;
- b: boolean;
- begin
- b:=false;
- clrscr;
- with p do
- begin
- gotoxy(10,1);writeln('NUEVO PRODUCTO');
- repeat
- begin
- gotoxy(5,3);write('Codigo de Producto: ');
- readln(c);
- if(buscar(v,n,c)=false)then
- begin
- codigo:=c;
- b := true;
- end
- else
- begin
- gotoxy(5,4);writeln('codigo repetido');
- GotoXY(5,3);
- ClrEol;
- end;
- end;
- until(b=true);
- if(codigo=0)then
- Exit;
- gotoxy(5,4);write('Nombre de Producto: ');
- readln(nombre);
- gotoxy(5,5);write('Precio de Producto: ');
- readln(precio);
- b:=false;
- repeat
- begin
- gotoxy(5,6);write('Tipo de Producto: ');
- readln(t);
- if(UpCase(t)>='A')and(UpCase(t)<='C')then
- begin
- tipo:=t;
- b := true;
- end
- else
- gotoxy(5,7);writeln('Tipo inexistente');
- GotoXY(5,6);
- ClrEol;
- end;
- until(b=true);
- end;
- end;
- procedure altaProductos(var v: Tvector; var n:integer);
- var
- p: Tproducto;
- i: integer;
- begin
- n := 0;
- i:= 1;
- repeat
- begin
- nuevoProducto(p);
- if(p.codigo <> 0)then
- begin
- v[i] := p;
- n := n+1;
- i := i+1;
- end;
- end;
- Until(p.codigo = 0);
- end;
- procedure Menu();
- var
- opc:integer;
- begin
- repeat
- clrscr;
- gotoxy(5,1);writeln('************MENU GENERAL*************');
- gotoxy(5,2);writeln('Cargar Productos..................[1]');
- gotoxy(5,3);writeln('Mostrar Productos por un tipo.....[2]');
- gotoxy(5,4);writeln('Productos ordenados p/nombre......[3]');
- gotoxy(5,5);writeln('Productos de mayor precio.........[4]');
- gotoxy(5,6);writeln('Eliminar producto.................[5]');
- gotoxy(5,7);writeln('Modificar producto................[6]');
- gotoxy(5,8);writeln('SALIR.............................[7]');
- gotoxy(5,10);write('Escoja una opcion: ');
- readln(opc);
- case opc of
- 1: altaProductos(v,n);
- 2: mostrarProductos(v,n);
- 3: ordenSeleccion(v,n,aux);
- 4: ordenInsercion(v,n,aux);
- 5: bajaProducto(v,n);
- 6: modificarProducto(v,n);
- else
- writeln('OpciΓ³n Incorrecta');
- end;
- until opc = 7 ;
- end;
- begin
- Menu();
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement