Hellko

фывфа

May 27th, 2013
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class vec {
  5. friend class arr_vec;
  6. private: double x, y, z;
  7. public: friend vec operator+ (vec, vec);
  8. friend vec operator* (vec, double);
  9. friend vec operator* (double, vec);
  10. friend vec toVec(double x, double y, double z);
  11. };
  12.  
  13. vec toVec (double x, double y, double z) {
  14. vec v;
  15. v.x=x;
  16. v.y=y;
  17. v.z=z;
  18. return v;
  19. }
  20. vec operator+ (vec c, vec d) {
  21. return toVec(c.x+d.x, c.y+d.y, c.z+d.z);}
  22.  
  23. vec operator* (vec c, double d) {
  24. return toVec(c.x*d, c.y*d, c.z*d);}
  25.  
  26. vec operator* (double c, vec d) {
  27. return toVec(c*d.x, c*d.y, c*d.z);}
  28.  
  29. class arr_vec {
  30. private: double *x, *y, *z;
  31. int n;
  32. public: arr_vec(int);
  33. ~arr_vec();
  34. void set(int, vec);
  35. vec operator[] (int) const;
  36. void operator=(const arr_vec&);
  37. friend arr_vec operator+ (const arr_vec&, const arr_vec&);
  38. friend arr_vec operator* (double, const arr_vec&);
  39. friend arr_vec operator* (const arr_vec&, double);
  40. void show();
  41. };
  42. void arr_vec::operator =(const arr_vec& A) {
  43.     n=A.n;
  44.     x= new double [n];
  45.     y=new double[n];
  46.     z=new double [n];
  47.     for(int i=0; i<n; i++) {x[i]=A.x[i]; y[i]=A.y[i]; z[i]=A.z[i];}
  48. }
  49.  
  50. arr_vec::arr_vec(int N) {
  51. n=N;
  52. x=new double[n];
  53. y=new double[n];
  54. z=new double[n];
  55. for(int i=0; i<n; i++) {x[i]=y[i]=z[i]=1;}
  56. }
  57. arr_vec::~arr_vec() {
  58. delete[]x;
  59. delete[]y;
  60. delete[]z;
  61. }
  62. void arr_vec::set(int N, vec vvv) {
  63. if (n<N) return;
  64. x[N]=vvv.x;
  65. y[N]=vvv.y;
  66. z[N]=vvv.z;
  67. }
  68. vec arr_vec::operator [](int N) const {
  69. return toVec(x[N], y[N], z[N]);
  70. }
  71. arr_vec operator+ (const arr_vec& c, const arr_vec& d) {
  72. arr_vec *e;
  73. e=new arr_vec(c.n);
  74. for(int i=0; i<e->n; i++) e->set(i, c[i]+d[i]);
  75. return *e;
  76. }
  77. arr_vec operator* (double c, const arr_vec& d) {
  78. arr_vec *e;
  79. e=new arr_vec(d.n);
  80. for (int i=0; i<e->n; i++) e->set(i, c*d[i]);
  81. return *e;
  82. }
  83. arr_vec operator* (const arr_vec& c, double d) {
  84. arr_vec *e;
  85. e=new arr_vec(c.n);
  86. for (int i=0; i<e->n; i++) e->set(i, c[i]*d);
  87. return *e;
  88. }
  89. void arr_vec::show() {
  90. cout<<endl<<"X: ";
  91. for(int i=0; i<n; i++) cout<<x[i]<<"\t";
  92. cout<<endl<<"Y: ";
  93. for(int i=0; i<n; i++) cout<<y[i]<<"\t";
  94. cout<<endl<<"Z: ";
  95. for(int i=0; i<n; i++) cout<<z[i]<<"\t";
  96. cout<<endl;
  97. }
  98.  
  99. int main() {
  100. arr_vec c(2), d(2);
  101. vec e, f;
  102. e=toVec(1,2,3);
  103. f=toVec(4,5,6);
  104. c.set(0, e);
  105. c.show();
  106. c=c+c;
  107. c.show();
  108. }
Advertisement
Add Comment
Please, Sign In to add comment