Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. class Triada {
  4. public:
  5. Triada(){//конструтор по умолчанию,делаем нулевую тройку
  6. data = new double[size];
  7. for (int i = 0; i < size; ++i)
  8. data[i] = 0;
  9.  
  10. }
  11. Triada(const double x,const double y, const double z) {//задаем тройку пользовательскими числами,
  12. data = new double[size]; //const позволяет нам вводить не только имена переменных,но и просто числа
  13. data[0] = x;
  14. data[1] = y;
  15. data[2] = z;
  16.  
  17. }
  18. Triada(const Triada& triada) {//конструктор копирования
  19. data = new double[size];
  20. for (int i = 0; i < size; ++i)
  21. data[i] = triada.data[i];
  22.  
  23.  
  24. }
  25. ~Triada() {//деструктор-очищает поля с динамической памятью
  26. delete[] data;
  27. }
  28. Triada operator+(Triada triada) {
  29. for (int i = 0; i < size; ++i)
  30. data[i] += triada.data[i];
  31. return *this;
  32. }
  33. double operator*(Triada triada) {
  34. return (data[0] * triada.data[0] + data[1] * triada.data[1] + data[2] * triada.data[2]);
  35.  
  36. }
  37. Triada operator*(const double number) {
  38. for (int i = 0; i < size; ++i)
  39. data[i] *= number;
  40. return *this;
  41. }
  42.  
  43.  
  44.  
  45. private:
  46. int size = 3;
  47. double* data;
  48. };
  49. class Vector :public Triada {
  50. public:
  51. Vector() {
  52. v_data = new double[v_size];
  53. for (int i = 0; i < v_size; ++i)
  54. v_data[i] = 0;
  55.  
  56. }
  57. Vector(const double x, const double y, const double z) {
  58. v_data = new double[v_size];
  59. v_data[0] = x;
  60. v_data[1] = y;
  61. v_data[2] = z;
  62.  
  63. }
  64. Vector(const Vector& vector) {
  65. v_data = new double[v_size];
  66. for (int i = 0; i < v_size; ++i)
  67. v_data[i] = vector.v_data[i];
  68. }
  69. ~Vector() {
  70. delete[] v_data;
  71. }
  72.  
  73.  
  74. double Module(){
  75. return(sqrt(pow(v_data[0],2) + pow(v_data[1],2) + pow(v_data[2],2)));
  76.  
  77. }
  78. double Scalar( Vector& v2) {
  79. return (*this*v2);
  80.  
  81.  
  82. }
  83. Vector summary( Vector& v2) {
  84. /*Triada sum = *this + v2;
  85. return (reinterpret_cast<Vector&>(sum));*/
  86.  
  87. return(*this + v2);
  88. }
  89. friend std::ostream& operator<<(std::ostream& out, const Vector& v) {
  90. for (int i = 0; i <3; ++i)
  91. out << v.v_data[i];
  92. return out;
  93. }
  94. private:
  95. double* v_data;
  96. int v_size = 3;
  97. };
  98.  
  99.  
  100. int main() {
  101. Vector vec1(1, 2, 3);
  102. Vector vec2(2, 4, 8);
  103.  
  104. std::cout<<"First vector " << vec1<< "\n";
  105. std::cout <<"Second vector "<< vec2 << "\n";
  106. ;
  107.  
  108. system("pause");
  109. return 0;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement