0% found this document useful (0 votes)
12 views4 pages

KS, JDMFBGWSDF

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views4 pages

KS, JDMFBGWSDF

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

#include <iostream>

using namespace std;

int main()
{
int x;
cout << " meniu" << endl << endl;
cout << "1.......reuniunea a mai multor multimi" << endl;
cout << "2.......intersectia a mai multor multimi" << endl;
cout << "3.......ordonarea crescatoare/descrescatoare a unei multimi" << endl;
cout << "4.......cautarea unei valori intr o multime prin cautare binara" <<
endl;
cout << "5.......inchidere meniu" << endl << endl;
cin >> x;

if (x == 1)
{
int X;
cout << "Introduceti numarul de multimi: ";
cin >> X;

int m_multimi[100][10001], marime[100], reuniune[10001 * 100],


marime_reuniune = 0;

for (int i = 0; i < X; i++)


{
cout << "introduceti nr de termeni " << i + 1 << ": ";
cin >> marime[i];
cout << "introduceti elementele multimii " << i + 1 << ": ";
for (int j = 0; j < marime[i]; j++) cin >> m_multimi[i][j];
}

for (int i = 0; i < X; i++) {


for (int j = 0; j < marime[i]; j++) {
bool deja_in_reuniune = false;
for (int k = 0; k < marime_reuniune; k++) {
if (reuniune[k] == m_multimi[i][j]) {
deja_in_reuniune = true;
break;
}
}
if (!deja_in_reuniune) {
reuniune[marime_reuniune] = m_multimi[i][j];
marime_reuniune++;
}
}
}

cout << "Reuniunea multimilor este: ";


for (int i = 0; i < marime_reuniune; i++) cout << reuniune[i] << " ";
cout << endl;
}

else if (x == 2)
{
int X;
cout << "introduceti numarul de multimi: ";
cin >> X;
int m_multimi[100][10001], marime[100], intersectie[10001],
marime_intersectie = 0;

for (int i = 0; i < X; i++)


{
cout << "introduceti numarul de elemente ale multimii " << i + 1 << ":
";
cin >> marime[i];
cout << "introduceti elementele " << i + 1 << ": ";
for (int j = 0; j < marime[i]; j++) cin >> m_multimi[i][j];
}

for (int j = 0; j < marime[0]; j++)


{
bool in_toate_multimile = true;
for (int i = 1; i < X; i++)
{
bool e_in_multime = false;
for (int k = 0; k < marime[i]; k++)
{
if (m_multimi[i][k] == m_multimi[0][j])
{
e_in_multime = true;
break;
}
}
if (!e_in_multime)
{
in_toate_multimile = false;
break;
}
}
if (in_toate_multimile)
{
intersectie[marime_intersectie] = m_multimi[0][j];
marime_intersectie++;
}
}

if (marime_intersectie == 0) cout << "nu exista elemente comune" << endl;


else
{
cout << "intersectia multimilor este: ";
for (int i = 0; i < marime_intersectie; i++) cout << intersectie[i] <<
" ";
cout << endl;
}
}

else if (x == 3)
{
int z;
cout << "introduceti 1 pentru ordonare crescatoare" << endl;
cout << "introduceti 2 pentru ordonare descrescatoare" << endl;
cin >> z;
cout << endl;

if (z == 1)
{
int n, v[10001];
cout << endl << "introduceti nr. de termeni ";
cin >> n;
cout << endl << "introduceti termenii multimii ";
for (int i = 0; i < n; i++) cin >> v[i];
cout << endl;

bool sort;
do {
sort = true;
for (int i = 0; i < n - 1; i++)
if (v[i] > v[i + 1]) {
int aux = v[i];
v[i] = v[i + 1];
v[i + 1] = aux;
sort = false;
}
} while (!sort);

for (int i = 0; i < n; i++) cout << v[i] << " ";
}
else
{
int n, v[10001];
cout << endl << "introduceti nr. de termeni ";
cin >> n;
cout << endl << "introduceti termenii multimii ";
for (int i = 0; i < n; i++) cin >> v[i];
cout << endl;

bool sort;
do {
sort = true;
for (int i = 0; i < n - 1; i++)
if (v[i] < v[i + 1]) {
int aux = v[i];
v[i] = v[i + 1];
v[i + 1] = aux;
sort = false;
}
} while (!sort);

for (int i = 0; i < n; i++) cout << v[i] << " ";
}
cout << endl;
}

else if (x == 4)
{
int n, v[10001], x, poz_x = -1;
cout << "introduceti nr. de termeni ";
cin >> n;
cout << endl << "introduceti termenii multimii ";
for (int i = 0; i < n; i++) cin >> v[i];
cout << endl << "introduceti termenul care se va cauta ";
cin >> x;
cout << endl;
int stanga = 0, dreapta = n - 1;
while (stanga <= dreapta) {
int mij = (stanga + dreapta) / 2;
if (v[mij] == x) {
poz_x = mij;
break;
}
else if (v[mij] < x) {
stanga = mij + 1;
}
else {
dreapta = mij - 1;
}
}

if (poz_x == -1) {
cout << "Elementul nu a fost gasit" << endl;
}
else {
cout << "Elementul cautat se afla pe pozitia " << poz_x << endl;
}
}

else if (x == 5) return 0;

return 0;
}

You might also like