Reuniunea a 2 vectori C++
#include
using namespace std;
int main() {
int a[100], n = 5, b[100], m, c[200];
cout << "nr elem a: ";
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i];
cout << "nr elem b: "; cin >> m;
for (int j = 0; j < m; j++)
cin >> b[j];
int i = 0, j = 0, k = 0;
while ((i < n) && (j < m)) {
if (a[i] < b[j])
c[k + 1] = a[i + 1];
else
c[k + 1] = b[j + 1];
}
cout << c[k];
for (i = 0; i < n; i++)
c[k + 1] = a[i];
for (j = 0; j < m; j++)
c[k + 1] = b[j];
for (int j= 0; j< k; j++)
cout << c[K] << " ";
}
Aici e ce am incercat eu, daca se poate modifica acest cod ca sa mearga .
rezolvare de clasa a 10 a

Răspuns :

Răspuns:

#include <iostream>

using namespace std;

int main() {

int i,j,n,m,a[100],b[1000];

cout<<"n="; cin>>n;

for(i=1;i<=n;i++) cin>>a[i];

cout<<"m= "; cin>>m;

for (i=1;i<=m;i++) cin>>b[i];

int  k=m;

for(i=1;i<=n;i++) //parcurg elementele vectorului a  

   {int ok=1; //pp ca componenta curenta nu este in b

   for(j=1;j<=k;j++) //parcurg elem lui b si daca gasesc a[i] in b  

   if (a[i]==b[j]) ok=0; //ok este 0

   if (ok) //daca ok a ramas 1 (adica a[i] nu e in vector

       {m++; b[m]=a[i];} //adaug inca o componenta la vectorul b: maresc m cu 1 si adaug a[i] la b

   }

// In b voi avea reuniunea celor doi vectori

//o afisez:

   for(i=1;i<=m;i++)

      cout<<b[i]<<" ";

}

Explicație:

Am facut reuniunea direct in b, adaugand la elementele lui b elementele din a care nu se gaseau printre elementele lui b;

Am retinut val initiala a lui m in k pt a cauta elem din a printre elementele care erau initial in b (nu si in cele adaugate ulterior)

Algoritmul poate fi imbunatatit. Poti sa iti faci un vector separat pt reuniune, etc etc.