fork download
  1. program lista_wspolna_z_p_i_q;
  2.  
  3. type tab=array[1..10] of integer;
  4.  
  5. lst = record
  6.  
  7. elementy: tab;
  8.  
  9. ile: integer
  10.  
  11. end;
  12.  
  13. var
  14.  
  15. i, j, k, l: integer;
  16.  
  17. p, q, r: lst; (* p i q listy niepuste i niemalejące! r - lista wynikowa *)
  18.  
  19.  
  20.  
  21. begin
  22.  
  23. writeln('poczatek');
  24.  
  25. read(p.ile, q.ile); readln; writeln(p.ile,' ',q.ile);
  26.  
  27. for i:= 1 to p.ile do read(p.elementy[i]);readln;
  28.  
  29. for i:= 1 to q.ile do read(q.elementy[i]);readln;
  30.  
  31. for i:= 1 to p.ile do write(p.elementy[i],' ');writeln;
  32.  
  33. for i:= 1 to q.ile do write(q.elementy[i],' ');writeln;
  34.  
  35.  
  36.  
  37. i := 1; j := 1; k := 1;
  38.  
  39.  
  40.  
  41. // indeks do bierzących elementów listy p i q
  42.  
  43. while (i <= p.ile) and (j <= q.ile) do
  44.  
  45. begin
  46.  
  47. // Jesli liczba w "p" jest mniejsza to przesuwam indeks i
  48.  
  49. if p.elementy[i] < q.elementy[j] then
  50.  
  51. i := i + 1
  52.  
  53. // Jesli liczba w "q" jets mniejsza to przesuwam indeks j
  54.  
  55. else
  56.  
  57. if p.elementy[i] > q.elementy[j] then
  58.  
  59. j := j + 1
  60.  
  61. else
  62.  
  63. // A jesli p i q są rowne, dodajemy liczbe do r
  64.  
  65. begin
  66.  
  67. // k - biezaca pozycja na liscie r
  68.  
  69. r.elementy[k] := p.elementy[i]; // dowolną p lub q
  70.  
  71. // zwiekszamy indeksy
  72.  
  73. k := k + 1;
  74.  
  75. i := i + 1;
  76.  
  77. j := j + 1;
  78.  
  79. end;
  80.  
  81. end;
  82.  
  83.  
  84.  
  85. // Po petli, k wyszedł poza zakres
  86.  
  87. r.ile := k - 1;
  88.  
  89. for i:= 1 to r.ile do write(r.elementy[i],' '); writeln;
  90.  
  91. writeln('koniec');
  92.  
  93. end.
Success #stdin #stdout 0.01s 5288KB
stdin
8
6
1 1 2 3 3 5 5 11
2 2 5 7 7 11
stdout
poczatek
8 6
1 1 2 3 3 5 5 11 
2 2 5 7 7 11 
2 5 11 
koniec