Hellko

фыафыай

May 27th, 2013
39
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.                         void show() {
  12.                                 cout<<endl<<"X: "; cout<<x;
  13.                                 cout<<endl<<"Y: "; cout<<y;
  14.                                 cout<<endl<<"Z: "; cout<<z;
  15.                                 cout<<endl;
  16.                                 }
  17. };
  18.  
  19. vec toVec(double x, double y, double z) {
  20.         vec v;
  21.         v.x=x;
  22.         v.y=y;
  23.         v.z=z;
  24.         return v;
  25. }
  26. vec operator+ (vec c, vec d) {
  27.         return toVec(c.x+d.x, c.y+d.y, c.z+d.z);}
  28.  
  29. vec operator* (vec c, double d) {
  30.         return toVec(c.x*d, c.y*d, c.z*d);}
  31.  
  32. vec operator* (double c, vec d) {
  33.         return toVec(c*d.x, c*d.y, c*d.z);}
  34.  
  35. class arr_vec {
  36.         private: double *x, *y, *z;
  37.                                 int n;
  38.         public: arr_vec(int);
  39.                         ~arr_vec();
  40.                         void put(int, vec);
  41.                         vec operator[] (int) const;
  42.                         void operator=(const arr_vec&);
  43.                         friend arr_vec operator+ (const arr_vec&, const arr_vec&);
  44.                         friend arr_vec operator* (double, const arr_vec&);
  45.                         friend arr_vec operator* (const arr_vec&, double);
  46.                         void show();
  47.                         void add(const vec&);
  48. };
  49.  
  50. void arr_vec::add(const vec &A) {
  51.     double *tmpx, *tmpy, *tmpz;
  52.     tmpx = new double [n+1];
  53.     tmpy = new double [n+1];
  54.     tmpz = new double [n+1];
  55.     for(int i=0; i<n; i++) {
  56.         tmpx[i]=x[i];
  57.         tmpy[i]=y[i];
  58.         tmpz[i]=z[i];
  59.     }
  60.     tmpx[n]=A.x;
  61.     tmpy[n]=A.y;
  62.     tmpz[n]=A.z;
  63.     delete[]x; delete[]y; delete[]z;
  64.     x=tmpx;
  65.     y=tmpy;
  66.     z=tmpz;
  67.     n++;
  68. }
  69.  
  70. arr_vec::arr_vec(int N) {
  71.         n=N;
  72.         x=new double[n];
  73.         y=new double[n];
  74.         z=new double[n];
  75.         for(int i=0; i<n; i++) {x[i]=y[i]=z[i]=0;}
  76. }
  77. arr_vec::~arr_vec() {
  78.         delete[]x;
  79.         delete[]y;
  80.         delete[]z;
  81. }
  82. void arr_vec::put(int N, vec v) {
  83.         if (n<N) return;
  84.         x[N]=v.x;
  85.         y[N]=v.y;
  86.         z[N]=v.z;
  87.         //v.x=x[N+1];
  88.         //v.y=y[N+1];
  89.         //v.z=z[N+1];
  90. }
  91. vec arr_vec::operator [](int N) const {
  92.         return toVec(x[N], y[N], z[N]);
  93. }
  94. arr_vec operator+ (const arr_vec& c, const arr_vec& d) {
  95.         arr_vec *e;
  96.         e=new arr_vec(c.n);
  97.         for(int i=0; i<e->n; i++) e->put(i, c[i]+d[i]);
  98.         return *e;
  99. }
  100. arr_vec operator* (double c, const arr_vec& d) {
  101.         arr_vec *e;
  102.         e=new arr_vec(d.n);
  103.         for (int i=0; i<e->n; i++) e->put(i, c*d[i]);
  104.         return *e;
  105. }
  106. arr_vec operator* (const arr_vec& c, double d) {
  107.         arr_vec *e;
  108.         e=new arr_vec(c.n);
  109.         for (int i=0; i<e->n; i++) e->put(i, c[i]*d);
  110.         return *e;
  111. }
  112. void arr_vec::show() {
  113.         cout<<endl<<"X: ";
  114.                 for(int i=0; i<n; i++) cout<<x[i]<<"\t";
  115.         cout<<endl<<"Y: ";
  116.                 for(int i=0; i<n; i++) cout<<y[i]<<"\t";
  117.         cout<<endl<<"Z: ";
  118.                 for(int i=0; i<n; i++) cout<<z[i]<<"\t";
  119.         cout<<endl;
  120. }
  121. void arr_vec::operator =(const arr_vec& A) {
  122.         n=A.n;
  123.         x=new double[n];
  124.         y=new double[n];
  125.         x=new double[n];
  126.         for(int i=0; i<n; i++) {x[i]=A.x[i]; y[i]=A.y[i]; z[i]=A.z[i];}
  127. }
  128.  
  129. int main() {
  130.         double g=3.;
  131.         arr_vec c(2), d(2);
  132.         vec e, f;
  133.         e=toVec(1,2,3);
  134.         f=toVec(4,5,6);
  135.         c.put(0, e);
  136.         c.show();
  137.         d.put(1,f);
  138.         d.show();
  139.         (c+d).show();
  140.         (g*c).show();
  141.         c=c+d; c.show();
  142.         c.put(0,toVec(0,0,0)); c.show();
  143.         (d[1]).show();
  144.         c.add(toVec(666,666,666));
  145.         c.show();
  146.  
  147. }
Advertisement
Add Comment
Please, Sign In to add comment