Advertisement
diegoguerrero

ED - TAD Conjuntos - Vectores booleanos v. 1

Apr 3rd, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.20 KB | None | 0 0
  1. UNIT uConjuntoVectoresBooleanos;
  2. INTERFACE
  3.     USES uElementoInteger; {Debe introducir Incrementar como parámetro genérico de TElemento}
  4.  
  5.     TYPE
  6.         TConjunto = ARRAY[INI..FIN] OF boolean; {INI y FIN son parámetros genéricos que dependen de TElemento}
  7.  
  8.     {Constructoras generadoras}
  9.         PROCEDURE CrearConjuntoVacio(VAR c : TConjunto);
  10.         PROCEDURE Poner(VAR c : TConjunto; e : TElemento);
  11.     {Constructoras no generadoras}
  12.         PROCEDURE Quitar(VAR c : TConjunto; e : TElemento);
  13.         PROCEDURE Union(VAR c1 : TConjunto; c2 : TConjunto);
  14.         PROCEDURE Interseccion(VAR c1 : TConjunto; c2 : TConjunto);
  15.         PROCEDURE Diferencia(VAR c1 : TConjunto; c2 : TConjunto);
  16.     {Observadoras selectoras}
  17.         {PROCEDURE Elegir(c : TConjunto; VAR e : TElemento);}
  18.     {Observadoras no selectoras}
  19.         FUNCTION EsConjuntoVacio(c : TConjunto):boolean;
  20.         FUNCTION Pertenece(c : TConjunto; e : TElemento):boolean;
  21.         FUNCTION EsSubconjunto(c1, c2 : TConjunto):boolean;
  22.         FUNCTION Cardinal(c : TConjunto):integer;
  23. IMPLEMENTATION
  24. {Constructoras generadoras}
  25.     PROCEDURE CrearConjuntoVacio(VAR c : TConjunto);
  26.         VAR
  27.             i : TElemento;
  28.         BEGIN
  29.             i := INI;
  30.             WHILE (i <= FIN) DO BEGIN
  31.                 c[i] := FALSE;
  32.                 Incrementar(i);
  33.             END;
  34.         END;
  35.     PROCEDURE Poner(VAR c : TConjunto; e : TElemento);
  36.         BEGIN
  37.             c[e] := TRUE;
  38.         END;
  39. {Constructoras no generadoras}
  40.     PROCEDURE Quitar(VAR c : TConjunto; e : TElemento);
  41.         BEGIN
  42.             c[e] := FALSE;
  43.         END;
  44.     PROCEDURE Union(VAR c1 : TConjunto; c2 : TConjunto);
  45.         VAR
  46.             i : TElemento;
  47.         BEGIN
  48.             i := INI;
  49.             WHILE (i <= FIN) DO BEGIN
  50.                 IF c2[i] THEN
  51.                     c1[i] := TRUE;
  52.                 Incrementar(i);
  53.             END;
  54.         END;
  55.     PROCEDURE Interseccion(VAR c1 : TConjunto; c2 : TConjunto);
  56.         VAR
  57.             i : TElemento;
  58.         BEGIN
  59.             i := INI;
  60.             WHILE (i <= FIN) DO BEGIN
  61.                 IF (c1[i] AND c2[i]) THEN
  62.                     c1[i] := TRUE
  63.                 ELSE
  64.                     c1[i] := FALSE;
  65.                 Incrementar(i);
  66.             END;
  67.         END;
  68.     PROCEDURE Diferencia(VAR c1 : TConjunto; c2 : TConjunto);
  69.         VAR
  70.             i : TElemento;
  71.         BEGIN
  72.             i := INI;
  73.             WHILE (i <= FIN) DO BEGIN
  74.                 IF c2[i] THEN
  75.                     c1[i] := FALSE;
  76.                 Incrementar(i);
  77.             END;
  78.         END;
  79. {Observadoras selectoras}
  80.     {PROCEDURE Elegir(c : TConjunto; VAR e : TElemento);}
  81. {Observadoras no selectoras}
  82.     FUNCTION EsConjuntoVacio(c : TConjunto):boolean;
  83.         VAR
  84.             i : TElemento;
  85.             conjEstaVacio : boolean;
  86.         BEGIN
  87.             i := INI;
  88.             conjEstaVacio := FALSE;
  89.             WHILE ((i <= FIN) AND (NOT conjEstaVacio)) DO BEGIN
  90.                 conjEstaVacio := c[i];
  91.                 Incrementar(i);
  92.             END;
  93.             EsConjuntoVacio := NOT conjEstaVacio;
  94.         END;
  95.     FUNCTION Pertenece(c : TConjunto; e : TElemento):boolean;
  96.         BEGIN
  97.             Pertenece := c[e];
  98.         END;
  99.     FUNCTION EsSubconjunto(c1, c2 : TConjunto):boolean;
  100.         VAR
  101.             distinto : boolean;
  102.             i : TElemento;
  103.         BEGIN
  104.             distinto := FALSE;
  105.             WHILE ((i <= FIN) AND (NOT distinto)) DO BEGIN
  106.                 distinto := ((c1[i]) AND (NOT c2[i]));
  107.                 Incrementar(i);
  108.             END;
  109.             EsSubconjunto := distinto;
  110.         END;
  111.     FUNCTION Cardinal(c : TConjunto):integer;
  112.         VAR
  113.             n : integer;
  114.             i : TElemento;
  115.         BEGIN
  116.             n := 0;
  117.             i := INI;
  118.             IF (NOT EsConjuntoVacio(c)) THEN BEGIN
  119.                 n := 0;
  120.                 WHILE (i <= FIN) DO BEGIN
  121.                     IF c[i] THEN
  122.                         n := n + 1;
  123.                     Incrementar(i);
  124.                 END;
  125.             END;
  126.             Cardinal := n;
  127.         END;
  128. END.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement