Conan
Moderator
 Inregistrat: acum 18 ani
Postari: 198
|
|
/*Sa se implementeze clasa multime care permite manipularea multimilor de numere. Clasa contine un constructor cu parametrii si metode pentru realizarea operatiilor de reuniune si intersectie a 2 multimi*/
#include <iostream.h> #include <conio.h>
class multime { private: int n; int v[100]; public: multime(); multime(int nr); void afis(); void adaug(int nr); int getn(); int getnr(int poz); int este(int nr); void reuniune(multime& m2); void intersectie(multime& m2); };
multime::multime() { n=0; }
multime::multime(int nr) { n=1; v[1]=nr; }
int multime::getn() { return n; }
int multime::getnr(int poz) { return v[poz]; }
void multime::afis() { cout<<"Multimea este:"<<endl; for (int i=1;i<=n;i++) cout<<v[i]<<" "; cout<<endl; }
int multime::este(int nr) { for (int i=1;i<=n;i++) if (v[i]==nr) return 1; return 0; }
void multime::adaug(int nr) { int i=1; if (nr>v[n]) { n++; v[n]=nr; } else if (nr<v[n]) { while (nr>v[i]) i++; // cout<<"i"<<i; if (nr!=v[i]) { for (int j=n;j>=i;j--) v[j+1]=v[j]; v[i]=nr; n++; } } }
void multime::reuniune(multime& m2) { for (int i=1;i<=n;i++) m2.adaug(v[i]); }
void multime::intersectie(multime& m2) { for (int i=1;i<=n;i++) if (m2.este(v[i])==0) { for (int j=i;j<n;j++) v[j]=v[j+1]; v[n]=0; n--;i--; } }
void main() { clrscr(); multime m(4),m2(1); m.adaug(2); m.adaug(3); m.adaug(1); m.afis(); m2.adaug(12); m2.adaug(6); m2.adaug(8); m2.adaug(3); m2.afis(); m.intersectie(m2); m.afis(); getch(); }
|
|