Advertisement
Guest User

Untitled

a guest
Jan 27th, 2020
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.25 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. private:
  41. double _x, _y, _z;
  42. };
  43.  
  44. istream& operator >> (istream &s, Wektor3 &w);
  45. ostream& operator << (ostream &s, Wektor3 &w);
  46. //=========================================================
  47.  
  48. // Definicje konstruktorow, metod i funkcji zaprzyjaznionych
  49.  
  50. Wektor3::Wektor3( void )
  51. {
  52. _x = _y = _z = 0.0;
  53. }
  54. //---------------------------------------------------------
  55.  
  56. Wektor3::Wektor3( double x, double y, double z )
  57. {
  58. _x = x; _y = y; _z = z;
  59. }
  60. //---------------------------------------------------------
  61.  
  62. Wektor3::Wektor3( const Wektor3 &w )
  63. //Do uzupelnienia
  64. {
  65. _x = w._x;
  66. _y = w._y;
  67. _z = w._z;
  68. }
  69. //---------------------------------------------------------
  70.  
  71. Wektor3& Wektor3::Assign( double x, double y, double z )
  72. {
  73. _x = x;
  74. _y = y;
  75. _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 wynik = 0;
  102. wynik = _x/(sqrt((_x*_x)+(_y*_y)));
  103. if(_y >= 0)
  104. {
  105. return (acos(wynik)*(180/M_PI));
  106. }else
  107. {
  108. return -(acos(wynik)*(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 suma(0,0,0);
  146. suma._x = w1._x + w2._x;
  147. suma._y = w1._y + w2._y;
  148. suma._z = w1._z + w2._z;
  149.  
  150. return suma;
  151. }
  152. //---------------------------------------------------------
  153.  
  154. Wektor3 operator * ( double k, const Wektor3 &w )
  155. //Do uzupelnienia
  156. {
  157. Wektor3 iloczyn;
  158.  
  159. iloczyn._x = k * w._x;
  160. iloczyn._y = k * w._y;
  161. iloczyn._z = k * w._z;
  162.  
  163. return iloczyn;
  164. }
  165.  
  166. Wektor3 operator * ( const Wektor3 &w, double k )
  167. //Do uzupelnienia
  168. {
  169. Wektor3 iloczyn;
  170.  
  171. iloczyn._x = k * w._x;
  172. iloczyn._y = k * w._y;
  173. iloczyn._z = k * w._z;
  174.  
  175. return iloczyn;
  176. }
  177. //---------------------------------------------------------
  178.  
  179. operator == ( const Wektor3 &w1, const Wektor3 &w2 )
  180. //Do uzupelnienia
  181. {
  182. if(w1._x == w2._x && w1._y == w2._y && w1._z == w2._z)
  183. {
  184. return true;
  185. }
  186. return false;
  187. }
  188. //---------------------------------------------------------
  189.  
  190. operator !=( const Wektor3 &w1, const Wektor3 &w2 )
  191. //Do uzupelnienia
  192. {
  193. if(w1._x != w2._x || w1._y != w2._y || w1._z != w2._z)
  194. {
  195. return true;
  196. }
  197. return false;
  198. }
  199.  
  200. // --------------------------------------------------------
  201.  
  202. istream& operator >> (istream &s, Wektor3 &w)
  203. {
  204. double x, y, z;
  205. s >> x >> y >> z;
  206.  
  207. w.Assign(x,y,z);
  208.  
  209. return s;
  210. }
  211. // --------------------------------------------------------
  212. ostream& operator << (ostream &s, Wektor3 &w)
  213. {
  214. double x, y, z;
  215.  
  216. x = w.X();
  217. y = w.Y();
  218. z = w.Z();
  219. s << "(" << x << ", " << y << ", " << z << ")";
  220. return s;
  221. }
  222. //=========================================================
  223.  
  224. int main(int argc, char *argv[])
  225. {
  226. Wektor3 w1( 1, 2, 3 );
  227. Wektor3 w3, w4, w5;
  228. double ax, ay, az, k;
  229.  
  230. cout << "Wektor w3 (x, y, z): ";
  231.  
  232. // cin >> ax >> ay >> az;
  233. // w3.Assign( ax, ay, az );
  234. cin >> w3;
  235.  
  236. cout << "Wektor w4 (x, y, z): ";
  237.  
  238. // cin >> ax >> ay >> az;
  239. // w4.Assign( ax, ay, az );
  240. cin >> w4;
  241.  
  242. cout << "Wspolczynnik k: ";
  243. cin >> k;
  244.  
  245. Wektor3 w31( w3 );
  246.  
  247. cout << fixed << setprecision( 3 ) << endl;
  248.  
  249. // cout << "Wektor w1 = ( " << w1.X( ) << ", " << w1.Y( ) << ", " << w1.Z( ) << " )" << endl;
  250. // cout << "Wektor w3 = ( " << w3.X( ) << ", " << w3.Y( ) << ", " << w3.Z( ) << " )" << endl;
  251. // cout << "Kopia w3 = ( " << w31.X( ) << ", " << w31.Y( ) << ", " << w31.Z( ) << " )" << endl;
  252. // cout << "Wektor w4 = ( " << w4.X( ) << ", " << w4.Y( ) << ", " << w4.Z( ) << " )" << endl << endl;
  253. cout << "Wektor w1 = " << w1 << endl;
  254. cout << "Wektor w3 = " << w3 << endl;
  255. cout << "Kopia w3 = " << w31 << endl;
  256. cout << "Wektor w4 = " << w4 << endl << endl;
  257.  
  258. // w5.Assign( w3 );
  259. // w5.Plus( w4 );
  260. w5 = w3;
  261. w5 += w4;
  262.  
  263. // cout << "Wektor w3+w4 = ( " << w5.X( ) << ", " << w5.Y( ) << ", " << w5.Z( ) << " )" << endl;
  264. cout << "Wektor w3+w4 = " << w5 << endl;
  265.  
  266. // w5.Assign( Plus( w1, w3 ) );
  267. w5 = w1 + w3;
  268.  
  269. // cout << "Wektor w1+w3 = ( " << w5.X( ) << ", " << w5.Y( ) << ", " << w5.Z( ) << " )" << endl << endl;
  270. cout << "Wektor w1+w3 = " << w5 << endl << endl;
  271.  
  272. // w5.Assign( w3 );
  273. // w5.Mult( k );
  274. w5 = w3;
  275. w5 *= k;
  276.  
  277. // cout << "Wektor k*w3 = ( " << w5.X( ) << ", " << w5.Y( ) << ", " << w5.Z( ) << " )" << endl ;
  278. cout << "Wektor k*w3 = " << w5 << endl ;
  279.  
  280. // w5.Assign( Mult( k, w4 ) );
  281. w5 = k * w4;
  282. // cout << "Wektor k*w4 = ( " << w5.X( ) << ", " << w5.Y( ) << ", " << w5.Z( ) << " )" << endl;
  283. cout << "Wektor k*w4 = " << w5 << endl;
  284. w5 = w3 * k;
  285. // cout << "Wektor w3*k = ( " << w5.X( ) << ", " << w5.Y( ) << ", " << w5.Z( ) << " )" << endl << endl;
  286. cout << "Wektor w3*k = " << w5 << endl << endl;
  287.  
  288. // cout << "Modul w3 = " << w3.Mod( ) << endl;
  289. cout << "Modul w3 = " << !w3 << endl;
  290.  
  291. cout << "Azymut w3 = " << w3.Azym( ) << endl;
  292. cout << "Elewacja w3 = " << w3.Elev( ) << endl << endl;
  293.  
  294. // cout << "w3==w4 " << ( Eq( w3, w4 ) ? "tak" : "nie" ) << endl << endl;
  295. // cout << "w3!=w4 " << ( Neq( w3, w4 ) ? "tak" : "nie" ) << endl << endl;
  296. cout << "w3==w4 " << ( ( w3 == w4 ) ? "tak" : "nie" ) << endl << endl;
  297. cout << "w3!=w4 " << ( ( w3 != w4 ) ? "tak" : "nie" ) << endl << endl;
  298.  
  299. return 0;
  300. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement