i = 3 ; j = 3 ; k = 5
program COMUNE; var pr, sec: text; COMM: boolean; x: char; function APPARTIENE (c: char): boolean; var APP: boolean; x: char; begin reset(sec, 'SECONDO'); APP := FALSE; while ((not EOF(sec)) and (not APP)) do begin read(sec, x); if x = c then APP := true; end; APPARTIENE := APP; close(sec); end; begin reset(pr, 'PRIMO'); COMM := FALSE; while ((not EOF(pr)) and (not COMM)) do begin read(pr, x); if APPARTIENE(x) then COMM := true; end; close(pr); write('I due file '); if not COMM then write('non '); writeln('hanno elementi comuni'); end.
program ESAME; type { gli elementi del tipo INSIEME rappresentano gli insiemi di numeri} { reali la cui cardinalita' e' al piu' 50 } INSIEME = record CARD: integer; {cardinalita' dell'insieme} ELEMENTI: array[1..50] of real; {contiene gli elementi dell'insieme nelle prime posizioni senza ripetizioni} end; var VUOTO, I1, I2, I3, I4, I5: INSIEME; over: BOOLEAN; { la funzione APPARTIENE controlla se un elemento appartiene ad un insieme } function APPARTIENE (x: real; s: INSIEME): BOOLEAN; var i: integer; APP: BOOLEAN; begin APP := FALSE; for i := 1 to s.CARD do if x = s.ELEMENTI[i] then APP := TRUE; APPARTIENE := APP; end; { la funzione CARDINALITA ritorna la cardinalita' di un insieme } function CARDINALITA (s: INSIEME): integer; begin CARDINALITA := s.CARD; end; { la procedura ADD ritorna l'insieme s a cui e' stato aggiunto l'elemento x } { con il parametro s2 } { il parametro oveflow ritorna se vi e' stato o no l'overflow } procedure ADD (x: real; s: INSIEME; var s2: INSIEME; var overflow: BOOLEAN); begin s2 := s; if APPARTIENE(x, s) then overflow := FALSE else if CARDINALITA(s) = 50 then overflow := TRUE else begin s2.CARD := s2.CARD + 1; s2.ELEMENTI[s2.CARD] := x; end; end; { la procedura UNIONE ritorna l'unione di due insiemi s1 e s2 con il parametro s3 } { il parametro oveflow ritorna se vi e' stato o no l'overflow } procedure UNIONE (s1, s2: INSIEME; var s3: INSIEME; var overflow: BOOLEAN); var i: integer; begin s3 := s1; for i := 1 to CARDINALITA(s2) do ADD(s2.ELEMENTI[i], s3, s3, overflow); end; begin { inizializzo VUOTO} VUOTO.CARD := 0; { assegnare ad I1 l'insieme vuoto } I1 := VUOTO; { assegnare ad I2 l'insieme 3.5, 7.0, 4.0 } I2 := VUOTO; ADD(3.5, I2, I2, over); ADD(7.0, I2, I2, over); ADD(4.0, I2, I2, over); { assegnare ad I3 l'insieme { 3.1, 7.0, 4.4, 8.8 } I3 := VUOTO; ADD(3.1, I3, I3, over); ADD(7.0, I3, I3, over); ADD(4.4, I3, I3, over); ADD(8.8, I3, I3, over); { controllare se 3.0 appartiene ad I2 U I3 } UNIONE(I2, I3, I4, over); if APPARTIENE(3.0, I4) then writeln('Appartiene') else writeln('Non appartiene'); { stampare la cardinalita' di I3 U I2 U I1 } UNIONE(I2, I1, I5, over); UNIONE(I3, I5, I5, over); writeln('Cardinalita = ', CARDINALITA(I5)); end.