n3r0nq

c4

Nov 13th, 2019
381
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.49 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <cmath>
  3. #include <iostream>
  4. #include <iomanip>
  5.  
  6. using namespace std;
  7.  
  8. //=========================================================
  9.  
  10. // Deklaracja klasy Wektor3
  11.  
  12. class Wektor3
  13. {
  14. public:
  15.     Wektor3( void );
  16.     Wektor3( double x, double y, double z );
  17.     Wektor3( const Wektor3 &w );
  18.  
  19.     double X( void ) { return _x; }
  20.     double Y( void ) { return _y; }
  21.     double Z( void ) { return _z; }
  22.  
  23.     Wektor3& Assign( double x, double y, double z );
  24.     Wektor3& Assign( const Wektor3 &w );
  25.  
  26.     double Mod( void );
  27.     double Azym( void );
  28.     double Elev( void );
  29.  
  30.     Wektor3& Plus( const Wektor3 &w );
  31.     Wektor3& Mult( double k );
  32.  
  33.     friend Wektor3 Plus( const Wektor3 &w1, const Wektor3 &w2 );
  34.     friend Wektor3 Mult( double k, const Wektor3 &w );
  35.  
  36.     friend bool Eq( const Wektor3 &w1, const Wektor3 &w2 );
  37.     friend bool Neq( const Wektor3 &w1, const Wektor3 &w2 );
  38.  
  39. private:
  40.     double  _x, _y, _z;
  41. };
  42.  
  43. //=========================================================
  44.  
  45. // Definicje konstruktorow, metod i funkcji zaprzyjaznionych
  46.  
  47. Wektor3::Wektor3( void )
  48. {
  49.     _x = _y = _z = 0.0;
  50. }
  51. //---------------------------------------------------------
  52.  
  53. Wektor3::Wektor3( double x, double y, double z )
  54. {
  55.     _x = x; _y = y; _z = z;
  56. }
  57. //---------------------------------------------------------
  58.  
  59. Wektor3::Wektor3( const Wektor3 &w )
  60. //Do uzupelnienia
  61. {
  62.     _x = w._x;
  63.     _y = w._y;
  64.     _z = w._z;
  65. }
  66. //---------------------------------------------------------
  67.  
  68. Wektor3& Wektor3::Assign( double x, double y, double z )
  69. {
  70.     _x = x; _y = y; _z = z;
  71.  
  72.     return *this;
  73. }
  74. //---------------------------------------------------------
  75.  
  76. Wektor3& Wektor3::Assign( const Wektor3 &w )
  77. //Do uzupelnienia
  78. {
  79.     _x = w._x;
  80.     _y = w._y;
  81.     _z = w._z;
  82.     return *this;
  83. }
  84. //---------------------------------------------------------
  85.  
  86. double Wektor3::Mod( void )
  87. //Do uzupelnienia
  88. {
  89.     return sqrt((_x*_x)+(_y*_y)+(_z*_z));
  90. }
  91. //---------------------------------------------------------
  92.  
  93. double Wektor3::Azym( void )
  94. {
  95. //Do uzupelnienia
  96.     double a = 0;
  97.     a = _x/(sqrt((_x*_x)+(_y*_y)));
  98.     if(_y >= 0)
  99.     {
  100.         return (acos(a)*(180/M_PI));
  101.     }else
  102.     {
  103.         return -(acos(a)*(180/M_PI));
  104.     }
  105. }
  106. //---------------------------------------------------------
  107.  
  108. double Wektor3::Elev( void )
  109. //Do uzupelnienia
  110. {
  111.     return (asin(_z/Mod())*(180/M_PI));
  112. }
  113. //---------------------------------------------------------
  114.  
  115. Wektor3& Wektor3::Plus( const Wektor3 &w )
  116. //Do uzupelnienia
  117. {
  118.     _x += w._x;
  119.     _y += w._y;
  120.     _z += w._z;
  121.    
  122.     return *this;
  123. }
  124. //---------------------------------------------------------
  125.  
  126. Wektor3& Wektor3::Mult( double k )
  127. //Do uzupelnienia
  128. {
  129.     _x *= k;
  130.     _y *= k;
  131.     _z *= k;
  132.     return *this;
  133. }
  134.  
  135. //---------------------------------------------------------
  136.  
  137. Wektor3 Plus( const Wektor3 &w1, const Wektor3 &w2 )
  138. //Do uzupelnienia
  139. {
  140.     Wektor3 tmpw;
  141.        
  142.         tmpw._x += w1._x + w2._x;
  143.         tmpw._y += w1._y + w2._y;
  144.         tmpw._z += w1._z + w2._z;
  145.    
  146.     return tmpw;
  147. }
  148. //---------------------------------------------------------
  149.  
  150. Wektor3 Mult( double k, const Wektor3 &w )
  151. //Do uzupelnienia
  152. {
  153.     Wektor3 tmpw;
  154.    
  155.     tmpw._x = k * w._x;
  156.     tmpw._y = k * w._y;
  157.     tmpw._z = k * w._z;
  158.    
  159.     return tmpw;
  160. }
  161. //---------------------------------------------------------
  162.  
  163. bool Eq( const Wektor3 &w1, const Wektor3 &w2 )
  164. //Do uzupelnienia
  165. {
  166.     if(w1._x == w2._x && w1._y == w2._y && w1._z == w2._z)
  167.     {
  168.         return true;
  169.     } else return false;
  170. }
  171. //---------------------------------------------------------
  172.  
  173. bool Neq( const Wektor3 &w1, const Wektor3 &w2 )
  174. //Do uzupelnienia
  175. {
  176.     if(w1._x != w2._x && w1._y != w2._y && w1._z != w2._z)
  177.     {
  178.         return true;
  179.     } else return false;
  180. }
  181. //=========================================================
  182.  
  183. int main(int argc, char *argv[])
  184. {
  185.     Wektor3     w1( 1, 2, 3 );
  186.     Wektor3     w3, w4, w5;
  187.     double      ax, ay, az, k;
  188.  
  189.     cout << "Wektor w3 (x, y, z): ";
  190.     cin >> ax >> ay >> az;
  191.     w3.Assign( ax, ay, az );
  192.  
  193.     cout << "Wektor w4 (x, y, z): ";
  194.     cin >> ax >> ay >> az;
  195.     w4.Assign( ax, ay, az );
  196.  
  197.     cout << "Wspolczynnik k: ";
  198.     cin >> k;
  199.  
  200.     Wektor3     w31( w3 );
  201.  
  202.     cout << fixed << setprecision( 3 ) << endl;
  203.     cout << "Wektor w1 = ( " << w1.X( ) << ", " << w1.Y( ) << ", " <<
  204.         w1.Z( ) << " )" << endl;
  205.     cout << "Wektor w3 = ( " << w3.X( ) << ", " << w3.Y( ) << ", " <<
  206.         w3.Z( ) << " )" << endl;
  207.     cout << "Kopia  w3 = ( " << w31.X( ) << ", " << w31.Y( ) << ", " <<
  208.         w31.Z( ) << " )" << endl;
  209.     cout << "Wektor w4 = ( " << w4.X( ) << ", " << w4.Y( ) << ", " <<
  210.         w4.Z( ) << " )" << endl << endl;
  211.  
  212.     w5.Assign( w3 );
  213.     w5.Plus( w4 );
  214.     cout << "Wektor w3+w4 = ( " << w5.X( ) << ", " << w5.Y( ) << ", " <<
  215.         w5.Z( ) << " )" << endl;
  216.  
  217.     w5.Assign( Plus( w1, w3 ) );
  218.     cout << "Wektor w1+w3 = ( " << w5.X( ) << ", " << w5.Y( ) << ", " <<
  219.         w5.Z( ) << " )" << endl << endl;
  220.  
  221.     w5.Assign( w3 );
  222.     w5.Mult( k );
  223.     cout << "Wektor k*w3 = ( " << w5.X( ) << ", " << w5.Y( ) << ", " <<
  224.         w5.Z( ) << " )" << endl ;
  225.  
  226.     w5.Assign( Mult( k, w4 ) );
  227.     cout << "Wektor k*w4 = ( " << w5.X( ) << ", " << w5.Y( ) << ", " <<         w5.Z( ) << " )" << endl << endl ;
  228.  
  229.     cout << "Modul w3 = " << w3.Mod( ) << endl;
  230.     cout << "Azymut w3 = " << w3.Azym( ) << endl;
  231.     cout << "Elewacja w3 = " << w3.Elev( ) << endl << endl;
  232.  
  233.     cout << "w3==w4 " << ( Eq( w3, w4 ) ? "tak" : "nie" ) << endl << endl;
  234.     cout << "w3!=w4 " << ( Neq( w3, w4 ) ? "tak" : "nie" ) << endl << endl;
  235.  
  236.     return 0;
  237. }
Add Comment
Please, Sign In to add comment