Advertisement
TAHMID37

hehe!

Jul 12th, 2021
933
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.55 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4.  
  5. class matrix3d{
  6.  
  7. private:
  8.     double arr[3][3];
  9. public:
  10.  
  11.     matrix3d()
  12.     {
  13.         memset(arr,0,sizeof(arr));
  14.     }
  15.  
  16.  
  17.     matrix3d(double a11, double a12, double a13, double a21 ,double a22,double a23, double a31, double a32, double a33 )
  18.     {
  19.           arr[0][0]=a11, arr[0][1]=a12, arr[0][2]=a13;
  20.           arr[1][0]=a21, arr[1][1]=a22, arr[1][2]=a23;
  21.           arr[2][0]=a31, arr[2][1]=a32, arr[2][2]=a33;
  22.     }
  23.  
  24.  
  25.     ~matrix3d()
  26.     {
  27.  
  28.     }
  29.  
  30.     void display() const
  31.     {
  32.         int i,j;
  33.  
  34.         for(i=0;i<3;i++)
  35.         {
  36.             for(j=0;j<3;j++)
  37.                 cout<<arr[i][j]<<" ";
  38.             cout<<endl;
  39.         }
  40.     }
  41.  
  42.  
  43.     double det()
  44.     {
  45.         double a11=arr[0][0],a12=arr[0][1],a13=arr[0][2];
  46.         double a21=arr[1][0],a22=arr[1][1],a23=arr[1][2];
  47.         double a31=arr[2][0],a32=arr[2][1],a33=arr[2][2];
  48.  
  49.         return a11*(a22*a33-a23*a32) - a12*(a21*a33-a23*a31) + a13*(a21*a32-a22*a31);
  50.     }
  51.  
  52.  
  53.     matrix3d transpose()
  54.     {
  55.         double a11=arr[0][0],a12=arr[0][1],a13=arr[0][2];
  56.         double a21=arr[1][0],a22=arr[1][1],a23=arr[1][2];
  57.         double a31=arr[2][0],a32=arr[2][1],a33=arr[2][2];
  58.  
  59.         return matrix3d(a11,a21,a31,a12,a22,a32,a13,a23,a33);
  60.  
  61.     }
  62.  
  63.     matrix3d cofactor()
  64.     {
  65.         double a11=arr[0][0],a12=arr[0][1],a13=arr[0][2];
  66.         double a21=arr[1][0],a22=arr[1][1],a23=arr[1][2];
  67.         double a31=arr[2][0],a32=arr[2][1],a33=arr[2][2];
  68.  
  69.         double a, b, c, d, e, f, g, h, i;
  70.  
  71.         a = a22*a33 - a23*a32;  b = a21*a33 - a23*a31;  c = a21*a32 - a22*a31;
  72.         d = a12*a33 - a13*a32;  e = a11*a33 - a13*a31;  f = a11*a32 - a12*a31;
  73.         g = a12*a23 - a13*a22;  h = a11*a23 - a13*a21;  i = a11*a22 - a12*a21;
  74.  
  75.         return matrix3d (a, -b, c, -d, e, -f, g, -h, i);
  76.  
  77.     }
  78.  
  79.     friend matrix3d operator +(matrix3d m1,matrix3d m2);
  80.  
  81.     friend matrix3d operator -(matrix3d m1,matrix3d m2);
  82.  
  83.     friend matrix3d operator * (matrix3d m1,matrix3d m2);
  84.  
  85.     matrix3d operator * (double x)
  86.     {
  87.         double a11=arr[0][0],a12=arr[0][1],a13=arr[0][2];
  88.         double a21=arr[1][0],a22=arr[1][1],a23=arr[1][2];
  89.         double a31=arr[2][0],a32=arr[2][1],a33=arr[2][2];
  90.  
  91.  
  92.         double a, b, c, d, e, f, g, h, i;
  93.         a = x * a11;    b = x * a12;    c = x * a13;
  94.         d = x * a21;    e = x * a22;    f = x * a23;
  95.         g = x * a31;    h = x * a32;    i = x * a33;
  96.         return matrix3d (a, b, c, d, e, f, g, h, i);
  97.     }
  98.  
  99.  
  100.  
  101.  
  102.  
  103.     matrix3d inverse()
  104.     {
  105.         if(det()==0)
  106.             exit(1);
  107.         return ((transpose()).cofactor())*(1/det());
  108.     }
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118. };
  119.  
  120.  
  121. matrix3d operator +(matrix3d m1,matrix3d m2)
  122. {
  123.         double a11=m1.arr[0][0],a12=m1.arr[0][1],a13=m1.arr[0][2];
  124.         double a21=m1.arr[1][0],a22=m1.arr[1][1],a23=m1.arr[1][2];
  125.         double a31=m1.arr[2][0],a32=m1.arr[2][1],a33=m1.arr[2][2];
  126.  
  127.         double b11=m2.arr[0][0],b12=m2.arr[0][1],b13=m2.arr[0][2];
  128.         double b21=m2.arr[1][0],b22=m2.arr[1][1],b23=m2.arr[1][2];
  129.         double b31=m2.arr[2][0],b32=m2.arr[2][1],b33=m2.arr[2][2];
  130.  
  131.         double a, b, c, d, e, f, g, h, i;
  132.         a = a11 + b11;    b = a12 + b12;    c = a13 + b13;
  133.         d = a21 + b21;    e = a22 + b22;    f = a23 + b23;
  134.         g = a31 + b31;    h = a32 + b32;    i = a33 + b33;
  135.  
  136.         return matrix3d (a, b, c, d, e, f, g, h, i);
  137.  
  138.  
  139.  
  140. }
  141.  
  142. matrix3d operator -(matrix3d m1,matrix3d m2)
  143. {
  144.         double a11=m1.arr[0][0],a12=m1.arr[0][1],a13=m1.arr[0][2];
  145.         double a21=m1.arr[1][0],a22=m1.arr[1][1],a23=m1.arr[1][2];
  146.         double a31=m1.arr[2][0],a32=m1.arr[2][1],a33=m1.arr[2][2];
  147.  
  148.         double b11=m2.arr[0][0],b12=m2.arr[0][1],b13=m2.arr[0][2];
  149.         double b21=m2.arr[1][0],b22=m2.arr[1][1],b23=m2.arr[1][2];
  150.         double b31=m2.arr[2][0],b32=m2.arr[2][1],b33=m2.arr[2][2];
  151.  
  152.         double a, b, c, d, e, f, g, h, i;
  153.         a = a11 - b11;    b = a12 - b12;    c = a13 - b13;
  154.         d = a21 - b21;    e = a22 - b22;    f = a23 - b23;
  155.         g = a31 - b31;    h = a32 - b32;    i = a33 - b33;
  156.  
  157.         return matrix3d (a, b, c, d, e, f, g, h, i);
  158.  
  159.  
  160. }
  161.  
  162. matrix3d operator * (matrix3d m1,matrix3d m2)
  163. {
  164.         double a11=m1.arr[0][0],a12=m1.arr[0][1],a13=m1.arr[0][2];
  165.         double a21=m1.arr[1][0],a22=m1.arr[1][1],a23=m1.arr[1][2];
  166.         double a31=m1.arr[2][0],a32=m1.arr[2][1],a33=m1.arr[2][2];
  167.  
  168.         double b11=m2.arr[0][0],b12=m2.arr[0][1],b13=m2.arr[0][2];
  169.         double b21=m2.arr[1][0],b22=m2.arr[1][1],b23=m2.arr[1][2];
  170.         double b31=m2.arr[2][0],b32=m2.arr[2][1],b33=m2.arr[2][2];
  171.  
  172.         double a, b, c, d, e, f, g, h, i;
  173.         a = (a11*b11)+(a12*b21)+(a13*b31);    b = (a11*b12) + (a12*b22) + (a13*b32);    c = (a11*b13) + (a12*b23) + (a13*b33);
  174.         d = (a21*b11)+(a22*b21)+(a23*b31);    e = (a21*b12) + (a22*b22) + (a23*b32);    f = (a21*b13) + (a22*b23) + (a23*b33);
  175.         g = (a31*b11)+(a32*b21)+(a33*b31);    h = (a31*b12) + (a32*b22) + (a33*b32);    i = (a31*b13) + (a32*b23) + (a33*b33);
  176.         return matrix3d (a, b, c, d, e, f, g, h, i);
  177.  
  178.  
  179.  
  180. }
  181.  
  182.  
  183. int main()
  184. {
  185.     matrix3d m1(1,2,3, 4,5,6, 7,6,0);
  186.     m1.display();
  187.  
  188.     //Det
  189.    
  190.     cout<<m1.det()<<endl;
  191.  
  192.     matrix3d m2;
  193.  
  194.     m2=m1.transpose();
  195.     m2.display();
  196.  
  197.     matrix3d m3;
  198.    
  199.     //  +
  200.     m3=m1+m2;
  201.  
  202.     m3.display();
  203.  
  204.     // -
  205.     m1=m3-m2;
  206.  
  207.     m1.display();
  208.  
  209.     m2=m1.transpose();
  210.  
  211.     m2.display();
  212.    
  213.     // *
  214.  
  215.     m3=m1*m2;
  216.  
  217.     m3.display();
  218.    
  219.    
  220.     //INVERSE
  221.  
  222.     m3=m3.inverse();
  223.  
  224.  
  225.     m3.display();
  226.  
  227.  
  228.  
  229.  
  230.  
  231. }
  232.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement