n3r0nq

c5

Nov 20th, 2019
656
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.15 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& operator = ( const Wektor3 &w );
  25.  
  26.     double operator ! ( void );
  27.     double Azym( void );
  28.     double Elev( void );
  29.  
  30.     Wektor3& operator += ( const Wektor3 &w );
  31.     Wektor3& operator *=( double k );
  32.  
  33.     friend Wektor3 operator + ( const Wektor3 &w1, const Wektor3 &w2 );
  34.     friend Wektor3 operator * ( double k, const Wektor3 &w );
  35.     friend Wektor3 operator * ( const Wektor3 &w, double k );
  36.  
  37.     friend operator == ( const Wektor3 &w1, const Wektor3 &w2 );
  38.     friend operator != ( const Wektor3 &w1, const Wektor3 &w2 );
  39.    
  40.     friend istream& operator >> (istream &s, Wektor3 &w);
  41.     friend ostream& operator << (ostream &s, Wektor3 &w);
  42.  
  43. private:
  44.     double  _x, _y, _z;
  45. };
  46.  
  47. //=========================================================
  48.  
  49. // Definicje konstruktorow, metod i funkcji zaprzyjaznionych
  50.  
  51.  
  52. Wektor3::Wektor3( void )
  53. {
  54.     _x = _y = _z = 0.0;
  55. }
  56. //---------------------------------------------------------
  57.  
  58. Wektor3::Wektor3( double x, double y, double z )
  59. {
  60.     _x = x; _y = y; _z = z;
  61. }
  62. //---------------------------------------------------------
  63.  
  64. Wektor3::Wektor3( const Wektor3 &w )
  65. //Do uzupelnienia
  66. {
  67.     _x = w._x;
  68.     _y = w._y;
  69.     _z = w._z;
  70. }
  71. //---------------------------------------------------------
  72.  
  73. Wektor3& Wektor3::Assign( double x, double y, double z )
  74. {
  75.     _x = x; _y = y; _z = z;
  76.  
  77.     return *this;
  78. }
  79. //---------------------------------------------------------
  80.  
  81. Wektor3& Wektor3::operator = ( const Wektor3 &w )
  82. //Do uzupelnienia
  83. {
  84.     _x = w._x;
  85.     _y = w._y;
  86.     _z = w._z;
  87.     return *this;
  88. }
  89. //---------------------------------------------------------
  90.  
  91. double Wektor3::operator ! ()
  92. //Do uzupelnienia
  93. {
  94.     return sqrt((_x*_x)+(_y*_y)+(_z*_z));
  95. }
  96. //---------------------------------------------------------
  97.  
  98. double Wektor3::Azym( void )
  99. {
  100. //Do uzupelnienia
  101.     double a = 0;
  102.     a = _x/(sqrt((_x*_x)+(_y*_y)));
  103.     if(_y >= 0)
  104.     {
  105.         return (acos(a)*(180/M_PI));
  106.     }else
  107.     {
  108.         return -(acos(a)*(180/M_PI));
  109.     }
  110. }
  111. //---------------------------------------------------------
  112.  
  113. double Wektor3::Elev( void )
  114. //Do uzupelnienia
  115. {
  116.     return (asin((_z)/(((sqrt((_x*_x)+(_y*_y)+(_z*_z)))))))*(180/M_PI);
  117. }
  118. //---------------------------------------------------------
  119.  
  120. Wektor3& Wektor3::operator += ( const Wektor3 &w )
  121. //Do uzupelnienia
  122. {
  123.     _x += w._x;
  124.     _y += w._y;
  125.     _z += w._z;
  126.    
  127.     return *this;
  128. }
  129. //---------------------------------------------------------
  130.  
  131. Wektor3& Wektor3::operator *=( double k )
  132. //Do uzupelnienia
  133. {
  134.     _x *= k;
  135.     _y *= k;
  136.     _z *= k;
  137.     return *this;
  138. }
  139.  
  140. //---------------------------------------------------------
  141.  
  142. Wektor3 operator + ( const Wektor3 &w1, const Wektor3 &w2 )
  143. //Do uzupelnienia
  144. {
  145.     Wektor3 tmpw;
  146.        
  147.         tmpw._x += w1._x + w2._x;
  148.         tmpw._y += w1._y + w2._y;
  149.         tmpw._z += w1._z + w2._z;
  150.    
  151.     return tmpw;
  152. }
  153. //---------------------------------------------------------
  154.  
  155. Wektor3 operator * ( double k, const Wektor3 &w )
  156. //Do uzupelnienia
  157. {
  158.     Wektor3 tmpw;
  159.    
  160.     tmpw._x = k * w._x;
  161.     tmpw._y = k * w._y;
  162.     tmpw._z = k * w._z;
  163.    
  164.     return tmpw;
  165. }
  166.  
  167. Wektor3 operator * ( const Wektor3 &w, double k )
  168. //Do uzupelnienia
  169. {
  170.     Wektor3 tmpw;
  171.    
  172.     tmpw._x = k * w._x;
  173.     tmpw._y = k * w._y;
  174.     tmpw._z = k * w._z;
  175.    
  176.     return tmpw;
  177. }
  178. //---------------------------------------------------------
  179.  
  180. operator == ( const Wektor3 &w1, const Wektor3 &w2 )
  181. //Do uzupelnienia
  182. {
  183.     if(w1._x == w2._x && w1._y == w2._y && w1._z == w2._z)
  184.     {
  185.         return true;
  186.     }
  187.     return false;
  188. }
  189. //---------------------------------------------------------
  190.  
  191. operator !=( const Wektor3 &w1, const Wektor3 &w2 )
  192. //Do uzupelnienia
  193. {
  194.     if(w1._x != w2._x || w1._y != w2._y || w1._z != w2._z)
  195.     {
  196.         return true;
  197.     }
  198.     return false;
  199. }
  200.  
  201. // --------------------------------------------------------
  202.  
  203. istream& operator >> (istream &s, Wektor3 &w)
  204. {
  205.     s >> w._x >> w._y >> w._z;
  206.     return s;
  207. }
  208. // --------------------------------------------------------
  209. ostream& operator << (ostream &s, Wektor3 &w)
  210. {
  211.     s << "(" << w._x << ", " << w._y << ", " << w._z << ")";
  212.     return s;
  213. }
  214. //=========================================================
  215.  
  216. int main(int argc, char *argv[])
  217. {
  218.     Wektor3     w1( 1, 2, 3 );
  219.     Wektor3     w3, w4, w5;
  220.     double      ax, ay, az, k;
  221.  
  222.     cout << "Wektor w3 (x, y, z): ";
  223.  
  224. //  cin >> ax >> ay >> az;
  225. //  w3.Assign( ax, ay, az );
  226.     cin >> w3;
  227.  
  228.     cout << "Wektor w4 (x, y, z): ";
  229.  
  230. //  cin >> ax >> ay >> az;
  231. //  w4.Assign( ax, ay, az );
  232.     cin >> w4;
  233.  
  234.     cout << "Wspolczynnik k: ";
  235.     cin >> k;
  236.  
  237.     Wektor3     w31( w3 );
  238.  
  239.     cout << fixed << setprecision( 3 ) << endl;
  240.  
  241. //  cout << "Wektor w1 = ( " << w1.X( ) << ", " << w1.Y( ) << ", " << w1.Z( ) << " )" << endl;
  242. //  cout << "Wektor w3 = ( " << w3.X( ) << ", " << w3.Y( ) << ", " << w3.Z( ) << " )" << endl;
  243. //  cout << "Kopia  w3 = ( " << w31.X( ) << ", " << w31.Y( ) << ", " << w31.Z( ) << " )" << endl;
  244. //  cout << "Wektor w4 = ( " << w4.X( ) << ", " << w4.Y( ) << ", " << w4.Z( ) << " )" << endl << endl;
  245.     cout << "Wektor w1 = " << w1 << endl;
  246.     cout << "Wektor w3 = " << w3 << endl;
  247.     cout << "Kopia  w3 = " << w31 << endl;
  248.     cout << "Wektor w4 = " << w4 << endl << endl;
  249.  
  250. //  w5.Assign( w3 );
  251. //  w5.Plus( w4 );
  252.     w5 = w3;
  253.     w5 += w4;
  254.  
  255. //  cout << "Wektor w3+w4 = ( " << w5.X( ) << ", " << w5.Y( ) << ", " << w5.Z( ) << " )" << endl;
  256.     cout << "Wektor w3+w4 = " << w5 << endl;
  257.  
  258. //  w5.Assign( Plus( w1, w3 ) );
  259.     w5 = w1 + w3;
  260.  
  261. //  cout << "Wektor w1+w3 = ( " << w5.X( ) << ", " << w5.Y( ) << ", " << w5.Z( ) << " )" << endl << endl;
  262.     cout << "Wektor w1+w3 = " << w5 << endl << endl;
  263.  
  264. //  w5.Assign( w3 );
  265. //  w5.Mult( k );
  266.     w5 = w3;
  267.     w5 *= k;
  268.  
  269. //  cout << "Wektor k*w3 = ( " << w5.X( ) << ", " << w5.Y( ) << ", " << w5.Z( ) << " )" << endl ;
  270.     cout << "Wektor k*w3 = " << w5 << endl ;
  271.  
  272. //  w5.Assign( Mult( k, w4 ) );
  273.     w5 = k * w4;
  274. //  cout << "Wektor k*w4 = ( " << w5.X( ) << ", " << w5.Y( ) << ", " << w5.Z( ) << " )" << endl;
  275.     cout << "Wektor k*w4 = " << w5 << endl;
  276.     w5 = w3 * k;
  277. //  cout << "Wektor w3*k = ( " << w5.X( ) << ", " << w5.Y( ) << ", " << w5.Z( ) << " )" << endl << endl;
  278.     cout << "Wektor w3*k = " << w5 << endl << endl;
  279.  
  280. //  cout << "Modul w3 = " << w3.Mod( ) << endl;
  281.     cout << "Modul w3 = " << !w3 << endl;
  282.  
  283.     cout << "Azymut w3 = " << w3.Azym( ) << endl;
  284.     cout << "Elewacja w3 = " << w3.Elev( ) << endl << endl;
  285.  
  286. //  cout << "w3==w4 " << ( Eq( w3, w4 ) ? "tak" : "nie" ) << endl << endl;
  287. //  cout << "w3!=w4 " << ( Neq( w3, w4 ) ? "tak" : "nie" ) << endl << endl;
  288.     cout << "w3==w4 " << ( ( w3 == w4 ) ? "tak" : "nie" ) << endl << endl;
  289.     cout << "w3!=w4 " << ( ( w3 != w4 ) ? "tak" : "nie" ) << endl << endl;
  290.    
  291.     return 0;
  292. }
Advertisement
Add Comment
Please, Sign In to add comment