Advertisement
madalinaradu

Multime

Apr 15th, 2019
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.66 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <string.h>
  4.  
  5. using namespace std;
  6. class Multime {
  7. private:
  8.     int elemente[100];
  9.     int nrElemente;
  10. public:
  11.     Multime();
  12.     Multime(int nrElemente, int elemente[]);
  13.  
  14.     int getNrElemente() {
  15.         return nrElemente;
  16.     }
  17.  
  18.     void citire();
  19.  
  20.     void afisare();
  21.  
  22.     //verifica ca x apartine multimii.
  23.     int apartine(int x);
  24.  
  25.     /**
  26.     * Verifica daca toate elementele din tabloul dat sunt disticte, adica pot forma o multime.
  27.     * @param n dimensiunea tabloului.
  28.     * @param t tabloul cu elemente
  29.     * @return 1 daca sunt disticte, 0 altfel.
  30.     */
  31.     static int suntDisticte(int n, int t[]);
  32.  
  33.     friend Multime operator *(Multime m1, Multime m2);
  34. };
  35.  
  36. Multime::Multime() {
  37.     this->nrElemente=0;
  38. }
  39.  
  40. Multime::Multime(int nrElemente, int elemente[]) {
  41.     this->nrElemente=nrElemente;
  42.     for(int i=0; i<nrElemente; i++) {
  43.         this->elemente[i]=elemente[i];
  44.     }
  45. }
  46.  
  47. int Multime::apartine(int x) {
  48.     int i;
  49.     for(i=0; i<nrElemente; i++) {
  50.         if (elemente[i]==x)
  51.             return 1;
  52.     }
  53.     return 0;
  54. }
  55.  
  56. void Multime:: citire() {
  57.     cout<<"Dati nr de elemente: ";
  58.     cin>>nrElemente;
  59.     cout<<"dati valoarea fiecarui element:";
  60.     for(int i=0; i<nrElemente; i++) {
  61.         cout<<"m["<<i<<"= ";
  62.         cin>>elemente[i];
  63.     }
  64. }
  65. /**
  66. * Verifica daca toate elementele din tabloul dat sunt disticte, adica pot forma o multime.
  67. * @param n dimensiunea tabloului.
  68. * @param t tabloul cu elemente
  69. * @return 1 daca sunt disticte, 0 altfel.
  70. */
  71. int Multime::suntDisticte(int n, int t[]) {
  72.     int i,j;
  73.     for(i=0; i<n-1; i++) {
  74.         for(j=i+1; j<n; j++) {
  75.             if (t[i]==t[j])
  76.                 return 0;
  77.         }
  78.     }
  79.     return 1;
  80. }
  81. void Multime::afisare() {
  82.     cout<<"Multimea elementelor este:{";
  83.     for(int i=0; i<nrElemente; i++) {
  84.         cout<<elemente[i]<<" , ";
  85.     }
  86.     cout<<"}"<<endl;
  87. }
  88.  
  89. Multime operator *(Multime m1, Multime m2) { //nu mai apare clasa Multime::, deoarece functia nu apartine clasei
  90.  
  91.     Multime m3;
  92.     int i,k; // k retine nr de elemente din intersectie m3
  93.  
  94.     for(i=0,k=0; i<m1.nrElemente; i++) {
  95.         if(m2.apartine(m1.elemente[i])) {
  96.             m3.elemente[k]=m1.elemente[i];
  97.             k++;
  98.         }
  99.     }
  100.     m3.nrElemente = k;
  101.  
  102.     return m3;
  103. }
  104.  
  105. int main() {
  106.     int p=3;
  107.     int tp[]= {1,2,3};
  108.     int q=4;
  109.     int tq[]= {2,3,4,5};
  110.     if(Multime::suntDisticte(p,tp) && Multime::suntDisticte(q,tq)) {
  111.  
  112.         Multime m1(p,tp);
  113.         m1.afisare();
  114.         Multime m2(q,tq);
  115.         m2.afisare();
  116.  
  117.         Multime m3 = m1*m2;
  118.         m3.afisare();
  119.     }
  120.     return 0;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement