Hellko

Untitled

May 27th, 2013
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.02 KB | None | 0 0
  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. friend arr_vec operator+ (const arr_vec&, const arr_vec&);
  37. friend arr_vec operator* (double, const arr_vec&);
  38. friend arr_vec operator* (const arr_vec&, double);
  39. void show();
  40. };
  41.  
  42. arr_vec::arr_vec(int N) {
  43. n=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]=y[i]=z[i]=1;}
  48. }
  49. arr_vec::~arr_vec() {
  50. delete[]x;
  51. delete[]y;
  52. delete[]z;
  53. }
  54. void arr_vec::set(int N, vec vvv) {
  55. if (n<N) return;
  56. x[N]=vvv.x;
  57. y[N]=vvv.y;
  58. z[N]=vvv.z;
  59. }
  60. vec arr_vec::operator [](int N) const {
  61. return toVec(x[N], y[N], z[N]);
  62. }
  63. arr_vec operator+ (const arr_vec& c, const arr_vec& d) {
  64. arr_vec *e;
  65. e=new arr_vec(c.n);
  66. for(int i=0; i<e->n; i++) e->set(i, c[i]+d[i]);
  67. return *e;
  68. }
  69. arr_vec operator* (double c, const arr_vec& d) {
  70. arr_vec *e;
  71. e=new arr_vec(d.n);
  72. for (int i=0; i<e->n; i++) e->set(i, c*d[i]);
  73. return *e;
  74. }
  75. arr_vec operator* (const arr_vec& c, double d) {
  76. arr_vec *e;
  77. e=new arr_vec(c.n);
  78. for (int i=0; i<e->n; i++) e->set(i, c[i]*d);
  79. return *e;
  80. }
  81. void arr_vec::show() {
  82. cout<<endl<<"X: ";
  83. for(int i=0; i<n; i++) cout<<x[i]<<"\t";
  84. cout<<endl<<"Y: ";
  85. for(int i=0; i<n; i++) cout<<y[i]<<"\t";
  86. cout<<endl<<"Z: ";
  87. for(int i=0; i<n; i++) cout<<z[i]<<"\t";
  88. cout<<endl;
  89. }
  90.  
  91. int main() {
  92. arr_vec c(2), d(2);
  93. vec e, f;
  94. e=toVec(1,2,3);
  95. f=toVec(4,5,6);
  96. c.set(0, e);
  97. c.show();
  98. }
Advertisement
Add Comment
Please, Sign In to add comment