Advertisement
owlachno

rr

Mar 24th, 2020
575
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. class matr
  8. {
  9.     double** data;
  10. public:
  11.  
  12.     matr()
  13.     {
  14.         data = new double*[2];
  15.         data[0] = new double[2];
  16.         data[1] = new double[2];
  17.  
  18.         data[0][0] = 0;
  19.         data[0][1] = 0;
  20.         data[1][0] = 0;
  21.         data[1][1] = 0;
  22.     }
  23.     matr(const matr &temp)
  24.     {
  25.         data = new double*[2];
  26.         data[0] = new double[2];
  27.         data[1] = new double[2];
  28.  
  29.         for (int i = 0; i < 2; i++)
  30.             for (int j = 0; j < 2; j++) data[i][j] = temp.data[i][j];
  31.     }
  32.     matr(const double x)
  33.     {
  34.         data = new double*[2];
  35.         data[0] = new double[2];
  36.         data[1] = new double[2];
  37.  
  38.         data[0][0] = x;
  39.         data[0][1] = x;
  40.         data[1][0] = x;
  41.         data[1][1] = x;
  42.     }
  43.     matr(const double x1, const double x2, const double x3, const double x4)
  44.     {
  45.         data = new double*[2];
  46.         data[0] = new double[2];
  47.         data[1] = new double[2];
  48.  
  49.         data[0][0] = x1;
  50.         data[0][1] = x2;
  51.         data[1][0] = x3;
  52.         data[1][1] = x4;
  53.     }
  54.     ~matr()
  55.     {
  56.         delete[] data[0];
  57.         delete[] data[1];
  58.         delete[] data;
  59.     }
  60.  
  61.     matr   operator+ (const matr &temp) const
  62.     {
  63.         matr temp_obj(temp);
  64.  
  65.         temp_obj.data[0][0] = temp_obj.data[0][0] + data[0][0];
  66.         temp_obj.data[0][1] = temp_obj.data[0][1] + data[0][1];
  67.         temp_obj.data[1][0] = temp_obj.data[1][0] + data[1][0];
  68.         temp_obj.data[1][1] = temp_obj.data[1][1] + data[1][1];
  69.  
  70.         return temp_obj;
  71.     }
  72.     matr   operator+ (const double &x) const
  73.     {
  74.         matr temp_obj(x);
  75.  
  76.         temp_obj.data[0][0] = temp_obj.data[0][0] + data[0][0];
  77.         temp_obj.data[0][1] = temp_obj.data[0][1] + data[0][1];
  78.         temp_obj.data[1][0] = temp_obj.data[1][0] + data[1][0];
  79.         temp_obj.data[1][1] = temp_obj.data[1][1] + data[1][1];
  80.  
  81.         return temp_obj;
  82.     }
  83.     matr&  operator= (matr const& temp)
  84.     {
  85.         if (&temp != this)
  86.             for (int i = 0; i < 2; i++)
  87.                 for (int j = 0; j < 2; j++) data[i][j] = temp.data[i][j];
  88.         return *this;
  89.     }
  90.  
  91.     matr&  operator+=(const matr &temp)
  92.     {
  93.         data[0][0] += temp.data[0][0];
  94.         data[0][1] += temp.data[0][1];
  95.         data[1][0] += temp.data[1][0];
  96.         data[1][1] += temp.data[1][1];
  97.  
  98.         return *this;
  99.     }
  100.     matr&  operator+=(const double x)
  101.     {
  102.         data[0][0] += x;
  103.         data[0][1] += x;
  104.         data[1][0] += x;
  105.         data[1][1] += x;
  106.  
  107.         return *this;
  108.     }
  109.  
  110.     double det() const { return data[0][0] * data[1][1] - data[0][1] * data[1][0]; }
  111.     friend ostream& operator<<(ostream &out, const matr &p)
  112.     {
  113.         out << setw(3) << p.data[0][0] << " " << setw(3) << p.data[0][1] << "\n" << setw(3) << p.data[1][0] << " " << setw(3) << p.data[1][1] << "\n";
  114.         return out;
  115.     }
  116.     friend matr operator+ (const double &x, const matr &temp)
  117.     {
  118.         matr temp_obj(temp.data[0][0] + x, temp.data[0][1] + x, temp.data[1][0] + x, temp.data[1][1] + x);
  119.         return temp_obj;
  120.     }
  121. };
  122.  
  123.  
  124. int main()
  125. {
  126.     matr obj1;
  127.     matr obj2(4);
  128.     matr obj3(1, 2, 3, 4);
  129.     matr obj4(obj3);
  130.  
  131.     /*
  132.     obj1 = obj2 = obj3;
  133.     obj1 = obj1;
  134.  
  135.     cout << obj1 << endl;
  136.     */
  137.  
  138.     const matr obj5(5, 6, 7, 8);
  139.     //cout << obj5.det() << endl;
  140.  
  141.  
  142.  
  143.     /*
  144.     obj1 = obj5 + 1;    cout << obj1 << endl;
  145.     obj1 = 1 + obj5;    cout << obj1 << endl;
  146.     obj1 = obj5 + obj3; cout << obj1 << endl;
  147.     */
  148.  
  149.     /*
  150.     obj2 += 1;          cout << obj2;
  151.     obj2 += obj3;       cout << obj2;
  152.     */
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement