View difference between Paste ID: dZVmTWXz and jiCnrR94
SHOW: | | - or go back to the newest paste.
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
}