Advertisement
Hiitsu

Adam pacz

Jun 19th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.70 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4.  
  5. using namespace std;
  6.  
  7. class macierz
  8. {
  9.     int wiersze;
  10.     int kolumny;
  11.     float * wsk;
  12. public:
  13.     macierz(int k, int w );     //konstruktor domyslny
  14.     macierz(const macierz & m);    //konstruktor kopiujacy
  15.     macierz operator= (const macierz & m);    //operator przypisania
  16.     macierz operator+= (const macierz & m);   //dodawanie
  17.     macierz operator-= (const macierz & m);   //odejmowanie
  18.     void wypisz(); // funkcja wypisujaca macierz na ekran
  19.     void wpisz();    // funkcja inicjalizujaca wartosci macierzu
  20.     void wpisz_losowe(); //zapelnienie macierzy losowymi
  21.     friend istream & operator>> (istream & is, macierz & m);
  22.     friend ostream & operator<<(ostream & os, const macierz & m);  //operator wypisania na ekran
  23.     ~macierz();        //destruktor
  24. };
  25.  
  26. macierz::macierz(int k,int w):kolumny(k),wiersze(w),wsk(new float[wiersze*kolumny]){};
  27. macierz::macierz(const macierz & m):kolumny(m.kolumny),wiersze(m.wiersze),wsk(new float[kolumny*wiersze])
  28. {
  29.     for(int i=0;i<kolumny*wiersze;i++)
  30.     {
  31.         wsk[i]=m.wsk[i];
  32.     }
  33. }
  34.  
  35. int main()
  36. {   int x,y,z,c;
  37.     cout<<"Podaj ilosc wierszy pierwszej macierzy:";
  38.     cin>>x;
  39.     cout<<"Podaj ilosc kolumn pierwszej macierzy:";
  40.     cin>>y;
  41.     cout<<"Podaj ilosc wierszy drugiej macierzy:";
  42.     cin>>z;
  43.     cout<<"Podaj ilosc kolumn drugiej macierzy:";
  44.     cin>>c;
  45.     macierz m1(x,y);
  46.     macierz m2(z,c);
  47.     //macierz m3(x,y);
  48.    
  49.  
  50.     cout << "Podaj wartosci macierzy m1" << endl;
  51.     cin>>m1;
  52.     //cout << "Podaj wartosci macierzy m2" << endl;
  53.     //cin>>m2;
  54.     m2.wpisz_losowe();
  55.     m1.wypisz();
  56.     cout<<"\n";
  57.     m2.wypisz();
  58.     cout<<"\n";
  59.     cout<<"\n";
  60.     m2+=m1;
  61.     //m2-=m1
  62.     cout << "Twoj macierz ma wartosci:" << endl << m2 << endl;
  63.  
  64.  
  65.     system("pause");
  66. }
  67.  
  68. macierz macierz::operator= (const macierz & m)
  69. {
  70.     if(wiersze!=m.wiersze || kolumny!=m.kolumny)
  71.     {
  72.         delete wsk;
  73.         wiersze=m.wiersze;
  74.         kolumny=m.kolumny;
  75.         wsk = new float[wiersze*kolumny];
  76.     }
  77.     for(int i=0;i<wiersze*kolumny;i++)
  78.     {
  79.         wsk[i]=m.wsk[i];
  80.     }
  81.     return *this;
  82. }
  83. macierz macierz::operator+= (const macierz & m)
  84. {
  85.     if(wiersze!=m.wiersze || kolumny!=m.kolumny)
  86.     {
  87.         cout<<"Macierzy tych nie mozna dodawac do siebie"<<endl;
  88.         return *this;
  89.     }
  90.     else
  91.     {
  92.         for(int i=0;i<wiersze*kolumny;i++)
  93.         {
  94.             wsk[i]=wsk[i]+m.wsk[i];
  95.         }
  96.         return *this;
  97.     }
  98. }
  99.  
  100. macierz macierz::operator-= (const macierz & m)
  101. {
  102.     if(wiersze!=m.wiersze || kolumny!=m.kolumny)
  103.     {
  104.         cout<<"Macierzy nie mozna odjac od siebie"<<endl;
  105.         return *this;
  106.     }
  107.     else
  108.     {
  109.         for(int i=0;i<wiersze*kolumny;i++)
  110.         {
  111.             wsk[i]=wsk[i]-m.wsk[i];
  112.         }
  113.         return *this;
  114.     }
  115. }
  116. void macierz::wypisz()
  117. {
  118.     for(int i=0;i<wiersze*kolumny;i++)
  119.     {
  120.         if (i%wiersze==0) cout<<endl;
  121.         cout<<wsk[i]<<" ";
  122.     }
  123. }
  124. void macierz::wpisz()
  125. {
  126.     for(int i=0;i<wiersze*kolumny;i++)
  127.     {
  128.         cin>>wsk[i];
  129.     }
  130. }
  131. void macierz::wpisz_losowe()
  132. {
  133.     srand(time(NULL));                                      // Inicjalizujemy ziarno pseudolosowości
  134.     for (int i = 0; i<wiersze*kolumny; i++)
  135.     {
  136.        
  137.             this->wsk[i]=(rand()%45)+1;                // Wpisujemy losowe wartości
  138.        
  139.     }
  140. }
  141. istream & operator>> (istream & is, macierz & m)
  142. {
  143.     for (int i=0;i<m.wiersze*m.kolumny;i++)
  144.     {
  145.         is>>m.wsk[i];
  146.     }
  147.     return is;
  148. }
  149. ostream & operator<< (ostream & os, const macierz & m)
  150. {
  151.     for(int i=0;i<m.wiersze*m.kolumny;i++)
  152.     {
  153.         if (i%m.wiersze==0) os<<endl;
  154.         os<<m.wsk[i]<<" ";
  155.     }
  156.     return os;
  157. }
  158. macierz::~macierz(){delete wsk;}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement