Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- UNIT uConjuntoVectoresBooleanos;
- INTERFACE
- USES uElementoInteger; {Debe introducir Incrementar como parámetro genérico de TElemento}
- TYPE
- TConjunto = ARRAY[INI..FIN] OF boolean; {INI y FIN son parámetros genéricos que dependen de TElemento}
- {Constructoras generadoras}
- PROCEDURE CrearConjuntoVacio(VAR c : TConjunto);
- PROCEDURE Poner(VAR c : TConjunto; e : TElemento);
- {Constructoras no generadoras}
- PROCEDURE Quitar(VAR c : TConjunto; e : TElemento);
- PROCEDURE Union(VAR c1 : TConjunto; c2 : TConjunto);
- PROCEDURE Interseccion(VAR c1 : TConjunto; c2 : TConjunto);
- PROCEDURE Diferencia(VAR c1 : TConjunto; c2 : TConjunto);
- {Observadoras selectoras}
- {PROCEDURE Elegir(c : TConjunto; VAR e : TElemento);}
- {Observadoras no selectoras}
- FUNCTION EsConjuntoVacio(c : TConjunto):boolean;
- FUNCTION Pertenece(c : TConjunto; e : TElemento):boolean;
- FUNCTION EsSubconjunto(c1, c2 : TConjunto):boolean;
- FUNCTION Cardinal(c : TConjunto):integer;
- IMPLEMENTATION
- {Constructoras generadoras}
- PROCEDURE CrearConjuntoVacio(VAR c : TConjunto);
- VAR
- i : TElemento;
- BEGIN
- i := INI;
- WHILE (i <= FIN) DO BEGIN
- c[i] := FALSE;
- Incrementar(i);
- END;
- END;
- PROCEDURE Poner(VAR c : TConjunto; e : TElemento);
- BEGIN
- c[e] := TRUE;
- END;
- {Constructoras no generadoras}
- PROCEDURE Quitar(VAR c : TConjunto; e : TElemento);
- BEGIN
- c[e] := FALSE;
- END;
- PROCEDURE Union(VAR c1 : TConjunto; c2 : TConjunto);
- VAR
- i : TElemento;
- BEGIN
- i := INI;
- WHILE (i <= FIN) DO BEGIN
- IF c2[i] THEN
- c1[i] := TRUE;
- Incrementar(i);
- END;
- END;
- PROCEDURE Interseccion(VAR c1 : TConjunto; c2 : TConjunto);
- VAR
- i : TElemento;
- BEGIN
- i := INI;
- WHILE (i <= FIN) DO BEGIN
- IF (c1[i] AND c2[i]) THEN
- c1[i] := TRUE
- ELSE
- c1[i] := FALSE;
- Incrementar(i);
- END;
- END;
- PROCEDURE Diferencia(VAR c1 : TConjunto; c2 : TConjunto);
- VAR
- i : TElemento;
- BEGIN
- i := INI;
- WHILE (i <= FIN) DO BEGIN
- IF c2[i] THEN
- c1[i] := FALSE;
- Incrementar(i);
- END;
- END;
- {Observadoras selectoras}
- {PROCEDURE Elegir(c : TConjunto; VAR e : TElemento);}
- {Observadoras no selectoras}
- FUNCTION EsConjuntoVacio(c : TConjunto):boolean;
- VAR
- i : TElemento;
- conjEstaVacio : boolean;
- BEGIN
- i := INI;
- conjEstaVacio := FALSE;
- WHILE ((i <= FIN) AND (NOT conjEstaVacio)) DO BEGIN
- conjEstaVacio := c[i];
- Incrementar(i);
- END;
- EsConjuntoVacio := NOT conjEstaVacio;
- END;
- FUNCTION Pertenece(c : TConjunto; e : TElemento):boolean;
- BEGIN
- Pertenece := c[e];
- END;
- FUNCTION EsSubconjunto(c1, c2 : TConjunto):boolean;
- VAR
- distinto : boolean;
- i : TElemento;
- BEGIN
- distinto := FALSE;
- WHILE ((i <= FIN) AND (NOT distinto)) DO BEGIN
- distinto := ((c1[i]) AND (NOT c2[i]));
- Incrementar(i);
- END;
- EsSubconjunto := distinto;
- END;
- FUNCTION Cardinal(c : TConjunto):integer;
- VAR
- n : integer;
- i : TElemento;
- BEGIN
- n := 0;
- i := INI;
- IF (NOT EsConjuntoVacio(c)) THEN BEGIN
- n := 0;
- WHILE (i <= FIN) DO BEGIN
- IF c[i] THEN
- n := n + 1;
- Incrementar(i);
- END;
- END;
- Cardinal := n;
- END;
- END.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement