home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / EFFO / forum8.lzh / PROGRAMME / MODULA / SET / bigsetter.mod < prev   
Text File  |  1989-01-19  |  3KB  |  98 lines

  1. (* Module Version V#012, Gdos /1.3l/, Begonnen: 19.01.86, Stand: 12.04.86 *)
  2. (*                                                              Alex Wyss *)
  3. (* Anpassung Miele-M2 / OS-9  19-12-88                        W. Stehling *)
  4. MODULE BigSetter ;
  5.  
  6. FROM BigSet IMPORT
  7. (* typ *)       bigset ,
  8. (* proc *)      define , destroy , nullset , fullset , assign ,
  9.                 include , exclude , union , intersection , diff , symdiff ,
  10.                 complement , inset , subset , superset , equalset
  11. ;
  12. FROM InOut IMPORT
  13. (* proc *)      WriteString , Write , WriteCard , WriteLn, Read
  14. ;
  15.  
  16. CONST
  17.   setsize = 35  ;
  18.  
  19. PROCEDURE checkset ( bs : bigset ) ;
  20. VAR
  21.   i : CARDINAL ;
  22.   flag : BOOLEAN;
  23. BEGIN
  24.   flag := FALSE;
  25.   FOR i := 0  TO setsize DO
  26.     IF inset ( bs , i ) THEN
  27.       WriteCard ( i , 5 ) ;
  28.       flag := TRUE
  29.     END ; (* if *)
  30.   END ; (* for *)
  31.   IF  NOT flag  THEN
  32.     WriteString ('   {}')
  33.   END;
  34.   WriteLn ;
  35. END checkset ;
  36.  
  37. PROCEDURE  printset (set : CARDINAL; head : ARRAY OF CHAR);
  38. VAR     ch : CHAR;
  39. BEGIN
  40.   WriteLn;
  41.   WriteString (head);
  42.   WriteLn;
  43.   IF  (set = 1) OR (set = 3)  THEN
  44.     WriteString ('Set A :   ');
  45.     checkset (seta)
  46.   END;
  47.   IF  (set = 2) OR (set = 3)  THEN
  48.     WriteString ('Set B :   ');
  49.     checkset (setb)
  50.   END;
  51.   Read (ch);
  52. END  printset;
  53.  
  54. VAR
  55.   seta  ,
  56.   setb : bigset ;
  57.  
  58. BEGIN
  59.   WriteLn;
  60.   WriteLn;
  61.   WriteString ( 'Test fuer BigSet mit 36 Elementen' ) ; WriteLn ;
  62.   seta := define ( setsize ) ; printset (1, 'define Set A') ;
  63.   
  64.   include ( seta , 16  ) ; printset (1, 'include 16 in Set A') ;
  65.   include ( seta , 31  ) ; printset (1, 'include 31 in Set A') ;
  66.   exclude ( seta , 23  ) ; printset (1, 'exclude 23 in Set A') ;
  67.   exclude ( seta , 16  ) ; printset (1, 'exclude 16 in Set A') ;
  68.   include ( seta , 16  ) ; printset (1, 'include 16 in Set A') ;
  69.   
  70.   setb := define ( setsize ) ;
  71.   include ( setb , 23  ) ; printset (2, 'define Set B, include 23');
  72.   include ( setb , 31  ) ; printset (2, 'include 31 in Set B');
  73.   include ( setb ,  3  ) ; printset (2, 'include  3 in Set B');
  74.   include ( setb ,  1  ) ; printset (2, 'include  1 in Set B');
  75.   
  76.   union ( seta , setb , setb ) ; printset (3, 'Set B = Set A + Set B');
  77.   assign ( setb , seta ) ;       printset (3, 'Set A = Set B');
  78.   complement ( setb ) ;          printset (2, 'Set B = NOT (Set B)') ;
  79.   fullset ( seta  ) ;            printset (1, 'fullset (Set A)') ;
  80.   exclude (seta, 16);
  81.   exclude (seta, 13);
  82.   exclude (seta, 14);
  83.   exclude (seta, 15);      printset (1, 'exclude 13, 14, 15, 16 in Set A') ;
  84.   complement ( seta ) ;          printset (1, 'Set A = NOT (Set A)') ;
  85.  
  86.   intersection (setb, seta, setb);
  87.   printset (3, 'Set B = Set A * Set B');
  88.   diff (seta, setb, seta);
  89.   printset (3, 'Set A = Set A - Set B');
  90.   include ( seta , 14  ) ; printset (1, 'include 14 in Set A') ;
  91.   symdiff (setb, seta, setb);
  92.   printset (3, 'Set B = Set B / Set A');
  93.   
  94.   destroy ( setb ) ;
  95.   destroy ( seta ) ;
  96. END BigSetter .
  97.  
  98.