Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Operaciones:
Cantidad de Cortes Control
Cantidad de Elementos entre Cortes de Control
Dividir un Vector en dos (Par e Impar)
Intercalar dos Vectores (Un elemento de A y uno de B)
Purgar los Elementos usando Cortes de Control
3. Implementación:
3.1. Clases:
/**** vector.pas****/
unit uvector;
{$mode ObjFPC}{$H+}
interface
uses
Classes, SysUtils, Dialogs;
const
MAX_ELEM=1000;
type
{ Vector }
Vector=Class
private
elem:array[1..MAX_ELEM]of integer;
dim:integer;
public
constructor crear();
procedure setElem(pos,ele:integer);
function getElem(pos:integer):integer;
procedure setDim(dimen:integer);
function getDim():integer;
procedure addElem(ele:integer);
procedure insElem(pos,ele:integer);
procedure remElem(pos:integer); //CTRL+SHIFT+C
function busqSec(ele:integer):integer;
procedure ord_Inter();
function corteControlN1():integer;
procedure dispersion();
procedure dividirPar_Impar(Var A,B:Vector);
procedure mesclaOrdenada(A,B:Vector);
procedure purgar();
end;
implementation
{ Vector }
constructor Vector.crear;
var
pos:integer;
begin
pos:=1;
while(pos<=MAX_ELEM)do
begin
elem[pos]:=0;
pos:=pos+1;
end;
dim:=0;
end;
procedure Vector.ord_Inter;
var
p,d,aux:integer;
begin
for p:=1 to dim -1 do
begin
for d:=p+1 to dim do
begin
if(elem[d]<elem[p])then
begin
aux:=elem[d];
elem[d]:=elem[p];
elem[p]:=aux;
end;
end;
end;
end;
procedure Vector.dispersion;
var
i,ce:integer;
cad:string;
begin
i:=1;
ce:=1;
cad:='La Dispersion del Vector es :'#13#10;
while(i<=dim-1)do
begin
if(elem[i]<>elem[i+1])then
begin
cad:=cad+IntToStr(elem[i])+'=>'+IntToStr(ce)+' elementos'+#13#10;
ce:=1;
end
else
ce:=ce+1;
i:=i+1;
end;
cad:=cad+IntToStr(elem[i])+'=>'+IntToStr(ce)+' elementos'+#13#10;
showMessage(cad);
end;
procedure Vector.purgar;
var
pos,d:integer;
begin
pos:=1;
while(pos<=dim-1)do
begin
d:=pos+1;
while(d<=dim)do
begin
if(elem[pos]=elem[d])then
remElem(d)
else
d:=d+1;
end;
pos:=pos+1;
end;
end;
end.
3.2. Pantalla:
3.3. Evento:
unit uventana;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Grids, UVector;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
ELE: TEdit;
Label2: TLabel;
Label3: TLabel;
POS: TEdit;
Label1: TLabel;
SG: TStringGrid;
SGA: TStringGrid;
SGB: TStringGrid;
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
private
V,A,B:Vector;
procedure updateSG();
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.updateSG;
var
posi:integer;
begin
SG.ColCount:=V.getDim();
for posi:=1 to V.getDim() do
SG.Cells[posi-1,0]:=IntToStr(V.getElem(posi));
SGA.ColCount:=A.getDim();
for posi:=1 to A.getDim() do
SGA.Cells[posi-1,0]:=IntToStr(A.getElem(posi));
SGB.ColCount:=B.getDim();
for posi:=1 to B.getDim() do
SGB.Cells[posi-1,0]:=IntToStr(B.getElem(posi));
end;
end.