====== Únióképzés ====== **Általános feladat**: Rendelkezésünkre áll egy N és egy M elemű halmaz az A() és a B() vektorban ábrázolva. Készítsük el a két halmaz egyesítését a C() vektorba! Eljárás: Ciklus I=1-től N-ig C(I):=A(I) Ciklus vége CN:=N Ciklus J=1-től M-ig I:=1 Ciklus amíg I<=N és A(I)<>B(J) I:=I+1 Ciklus vége Ha I>N akkor CN:=CN+1 C(CN):=B(J) Ha vége Ciklus vége Eljárás vége. Pascal forráskód program uniokepzes; const n = 10; m = 12; var a: array [1..n] of integer; b: array [1..m] of integer; c: array [1..n+m] of integer; i, j, k: integer; begin randomize; //tömbök elkészítése for i:=1 to n do begin a[i]:=random(8); write(a[i], ' '); end; writeln; for j:=1 to m do begin b[j]:=random(8); write(b[j], ' '); end; writeln; //írjuk ki a c-be az a és b unióját! //(egyesítünk) for i:=1 to n do c[i]:=a[i]; k:=n; for j:=1 to m do begin i:=1; while (i<=n) and (a[i]<>b[j]) do i:=i+1; if i>n then begin k:=k+1; c[k]:=b[j]; end; end; writeln('az a es b unioja a c tombben: '); for i:=1 to k do write(c[i], ' '); readln; end. [[https://ideone.com/FyAxB9 | Az forráskódjának futtatása online ]] Unióképzés egyedi elemekkel. program uniokepzes_egyedielemek; const n = 10; m = 12; var a: array [1..n] of integer; b: array [1..m] of integer; c: array [1..n+m] of integer; i, j, k, l: integer; begin randomize; //tömbök elkészítése for i:=1 to n do begin a[i]:=random(7); write(a[i], ' '); end; writeln; for j:=1 to m do begin b[j]:=random(7); write(b[j], ' '); end; writeln; //írjuk ki a c-be az a és b unióját!(egyesítsünk) k:=0; for i:=1 to n do begin l:=1; while (l<=k) and (c[l]<>a[i]) do l:=l+1; if l>k then begin k:=k+1; c[k]:=a[i]; end; end; //writeln(k); for j:=1 to m do begin i:=1; while (i<=n) and (a[i]<>b[j]) do i:=i+1; if i>n then begin l:=1; while (l<=k) and (c[l]<>b[j]) do l:=l+1; if l>k then begin k:=k+1; c[k]:=b[j]; end; end; end; writeln('az a es b unioja a c tombben: '); for i:=1 to k do write(c[i], ' '); readln; end. [[https://ideone.com/dTtaeY | Az forráskódjának futtatása online ]] ===== Órai gyakorlat ===== (szükséges könyvtár: [[inf-prog-fszi:eljarasok_es_fueggvenyek#a_tomb_iopas_koenyvtar|tomb_io.pas]]) program uniokepzes; uses tomb_io; var a,b,c:tomb; n,m,i,j,k:byte; begin beolvas(a,n,'a'); beolvas(b,m,'b'); kiir(a,n,'a'); kiir(b,m,'b'); for i:=1 to n do c[i]:=a[i]; k:=n; for j:=1 to m do begin if not talal(a,n,b[j])and not talal(c,k,b[j]) then begin k:=k+1; c[k]:=b[j]; end; end; kiir(c,k,'c'); readln; end.