Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class vec {
- friend class arr_vec;
- private: double x, y, z;
- public: friend vec operator+ (vec, vec);
- friend vec operator* (vec, double);
- friend vec operator* (double, vec);
- friend vec toVec(double x, double y, double z);
- void show() {
- cout<<endl<<"X: "; cout<<x;
- cout<<endl<<"Y: "; cout<<y;
- cout<<endl<<"Z: "; cout<<z;
- cout<<endl;
- }
- };
- vec toVec(double x, double y, double z) {
- vec v;
- v.x=x;
- v.y=y;
- v.z=z;
- return v;
- }
- vec operator+ (vec c, vec d) {
- return toVec(c.x+d.x, c.y+d.y, c.z+d.z);}
- vec operator* (vec c, double d) {
- return toVec(c.x*d, c.y*d, c.z*d);}
- vec operator* (double c, vec d) {
- return toVec(c*d.x, c*d.y, c*d.z);}
- class arr_vec {
- private: double *x, *y, *z;
- int n;
- public: arr_vec(int);
- ~arr_vec();
- void put(int, vec);
- vec operator[] (int) const;
- void operator=(const arr_vec&);
- friend arr_vec operator+ (const arr_vec&, const arr_vec&);
- friend arr_vec operator* (double, const arr_vec&);
- friend arr_vec operator* (const arr_vec&, double);
- void show();
- void add(const vec&);
- };
- void arr_vec::add(const vec &A) {
- double *tmpx, *tmpy, *tmpz;
- tmpx = new double [n+1];
- tmpy = new double [n+1];
- tmpz = new double [n+1];
- for(int i=0; i<n; i++) {
- tmpx[i]=x[i];
- tmpy[i]=y[i];
- tmpz[i]=z[i];
- }
- tmpx[n]=A.x;
- tmpy[n]=A.y;
- tmpz[n]=A.z;
- delete[]x; delete[]y; delete[]z;
- x=tmpx;
- y=tmpy;
- z=tmpz;
- n++;
- }
- arr_vec::arr_vec(int N) {
- n=N;
- x=new double[n];
- y=new double[n];
- z=new double[n];
- for(int i=0; i<n; i++) {x[i]=y[i]=z[i]=0;}
- }
- arr_vec::~arr_vec() {
- delete[]x;
- delete[]y;
- delete[]z;
- }
- void arr_vec::put(int N, vec v) {
- if (n<N) return;
- x[N]=v.x;
- y[N]=v.y;
- z[N]=v.z;
- //v.x=x[N+1];
- //v.y=y[N+1];
- //v.z=z[N+1];
- }
- vec arr_vec::operator [](int N) const {
- return toVec(x[N], y[N], z[N]);
- }
- arr_vec operator+ (const arr_vec& c, const arr_vec& d) {
- arr_vec *e;
- e=new arr_vec(c.n);
- for(int i=0; i<e->n; i++) e->put(i, c[i]+d[i]);
- return *e;
- }
- arr_vec operator* (double c, const arr_vec& d) {
- arr_vec *e;
- e=new arr_vec(d.n);
- for (int i=0; i<e->n; i++) e->put(i, c*d[i]);
- return *e;
- }
- arr_vec operator* (const arr_vec& c, double d) {
- arr_vec *e;
- e=new arr_vec(c.n);
- for (int i=0; i<e->n; i++) e->put(i, c[i]*d);
- return *e;
- }
- void arr_vec::show() {
- cout<<endl<<"X: ";
- for(int i=0; i<n; i++) cout<<x[i]<<"\t";
- cout<<endl<<"Y: ";
- for(int i=0; i<n; i++) cout<<y[i]<<"\t";
- cout<<endl<<"Z: ";
- for(int i=0; i<n; i++) cout<<z[i]<<"\t";
- cout<<endl;
- }
- void arr_vec::operator =(const arr_vec& A) {
- n=A.n;
- x=new double[n];
- y=new double[n];
- x=new double[n];
- for(int i=0; i<n; i++) {x[i]=A.x[i]; y[i]=A.y[i]; z[i]=A.z[i];}
- }
- int main() {
- double g=3.;
- arr_vec c(2), d(2);
- vec e, f;
- e=toVec(1,2,3);
- f=toVec(4,5,6);
- c.put(0, e);
- c.show();
- d.put(1,f);
- d.show();
- (c+d).show();
- (g*c).show();
- c=c+d; c.show();
- c.put(0,toVec(0,0,0)); c.show();
- (d[1]).show();
- c.add(toVec(666,666,666));
- c.show();
- }
Advertisement
Add Comment
Please, Sign In to add comment