fork download
  1. /* Pb.11 Intersecție 149
  2.  
  3. VAR 2 - 2021-05-08 OK
  4.  
  5. Alex și George scriu fiecare pe câte o foaie câte un șir de numere naturale,
  6. reprezentând numerele lor preferate, iar acum vor să vadă care numere apar pe ambele foi.
  7.  
  8. Astfel, să se scrie o funcție ce primește ca și parametri 3 vectori: A , B și C
  9. și construiește în vectorul C intersecția celor două șiruri A și B.
  10.  
  11. Semnătură funcție
  12.   * Numele funcției va fi intersectie3
  13.   * Funcția va avea 3 parametri de tip întreg: A[ ] , B[ ] și C[ ]
  14.  
  15. Precizări
  16.   * Dacă intersecția celor două șiruri e mulțimea vidă, vectorul C[ ] se va lăsa gol
  17.   * Vectorii vor fi indexați de la 1, iar pe poziția 0 va fi memorat
  18.   numărul de elemente pe care le conține vectorul respectiv
  19.   * Se garantează că vectorii A și B sunt sortați crescător.
  20.   De asemenea, vectorul C trebuie să fie sortat crescător.
  21.   * Antetul funcției este următorul:
  22. void intersectie3(int A[ ], int B[ ], int C[ ])
  23.  
  24. Restricții
  25.   * 0 ≤ A[0], B[0] ≤ 10.000
  26.   * Elementele celor doi vectori sunt numere naturale mai mici decât 1.000.000.000
  27.  
  28. Exemplu
  29. A[ ] = {5, 1, 2, 2, 5, 8} ; B[ ] = {6, 2, 2, 2, 6, 7, 8}
  30. În urma apelului funcției intersectie3( A , B , C), vectorul C[ ] devine:
  31. C[ ] = {3, 2, 2, 8}
  32.  
  33. 5 1 2 2 5 8
  34. 6 2 2 2 6 7 8
  35. --->
  36. 3 2 2 8
  37.  
  38. DATELE MELE TEST
  39. 3 1 1 2
  40. 3 1 1 2
  41. Afiseaza 3 1 1 2
  42.  
  43.  2 10 20
  44.  3 3 5 45
  45. Afiseaza 0
  46.  
  47.  4 50 100 110 111
  48.  3 50 60 110
  49.  Afiseza 2 50 110
  50.  
  51.  4 1 1 1 2
  52.  4 1 1 2 3
  53.  Afiseaza 3 1 1 2
  54.  
  55. ALTE DATE TEST
  56. 1)
  57. A = 0
  58. B = 0 C = 0
  59.  
  60. 2)
  61. 3 1 3 5
  62. 2 2 4 C = 0 SIR VID
  63.  
  64. 2b)
  65. 2 2 4
  66. 3 1 3 5 C = 0
  67.  
  68. 3)
  69. 3 1 3 5
  70. 3 5 6 7 C = 1, 5
  71.  
  72. 4)
  73. 3 1 3 5
  74. 3 6 7 8 C = 0
  75.  
  76. 5)
  77. 3 7 8 9
  78. 3 1 3 5 C = 0
  79.  
  80. 6)
  81. 3 1 3 5
  82. 3 1 3 5 3 1 3 5
  83.  
  84. 7)
  85. 0
  86. 3 1 3 5 0
  87.  
  88. 8)
  89. 3 1 3 5
  90. 0 0
  91.  
  92. 9)
  93. 2 5 7
  94. 3 1 3 7 1 7
  95.  
  96. 10)
  97. 4 1 1 1 2
  98. 4 1 1 2 3 3 1 1 2
  99.  
  100. 11)
  101. 3 6 6 6
  102. 2 1 1 0
  103.  
  104. 12)
  105. 1 1
  106. 3 1 1 1 1 1
  107.  
  108. 13)
  109. 3 1 1 1
  110. 1 1 1 1
  111.  
  112. 14)
  113. 4 1 1 1 1
  114. 4 1 1 1 1 4 1 1 1 1
  115.  
  116.  
  117. */
  118.  
  119. #include <iostream>
  120.  
  121. using namespace std;
  122.  
  123.  
  124. void intersectie3 (int x[], int y[], int z[]) {
  125. int i = 1, j = 1, k = 0;
  126. while (i <= x[0] && j <= y[0]) {
  127. //while (i <= x[0]) { // ABORDAREA CU 2 WHILE E GRESITA !!!
  128. //while (j <= y[0]) {
  129. if (x[i] < y[j]) {
  130. i++;
  131. } else if (x[i] > y[j]) {
  132. j++;
  133. } else { // x[i] == y[i]
  134. k++;
  135. //z[k] = x[i];
  136. z[k] = y[j];
  137. i++, j++;
  138. }
  139. //}
  140. }
  141. z[0] = k;
  142. for (int l = 0; l <= z[0]; l++) {
  143. cout << z[l] << " ";
  144. }
  145. }
  146.  
  147.  
  148. int C[20001];
  149.  
  150. int main(){
  151. //int A[10001], B[10001]; //, C[20001]; // NU LE CITESTE ASA !!!
  152. //int A[] = {5, 1, 2, 2, 5, 8}, B[] = {6, 2, 2, 2, 6, 7, 8}; // ASA DA !!!
  153. //intersectie3 (A, B, C);
  154.  
  155. int nA, nB, A[10001], B[10001];
  156. cin >> nA;
  157. A[0] = nA;
  158. for (int i = 1; i <= A[0]; i++) {
  159. cin >> A[i];
  160. }
  161.  
  162. cin >> nB;
  163. B[0] = nB;
  164. for (int i = 1; i <= B[0]; i++) {
  165. cin >> B[i];
  166. }
  167.  
  168. intersectie3 (A, B, C);
  169.  
  170. cout << "\n";
  171. for (int l = 0; l <= C[0]; l++) {
  172. cout << C[l] << " ";
  173. }
  174. return 0;
  175. }
  176.  
Success #stdin #stdout 0s 5268KB
stdin
5 1 2 2 5 8
6 2 2 2 6 7 8
stdout
3 2 2 8 
3 2 2 8