SHOW:
|
|
- or go back to the newest paste.
| 1 | #include <iostream> | |
| 2 | using namespace std; | |
| 3 | ||
| 4 | - | class cube{
|
| 4 | + | class vec {
|
| 5 | - | friend class a_cube; |
| 5 | + | friend class arr_vec; |
| 6 | - | private: |
| 6 | + | private: double x, y, z; |
| 7 | - | double x,y,z,r; |
| 7 | + | public: friend vec operator+ (vec, vec); |
| 8 | - | public: |
| 8 | + | friend vec operator* (vec, double); |
| 9 | - | cube(double X=1, double Y=1, double Z=1, double R=1){x=X;y=Y;z=Z;r=R;}
|
| 9 | + | friend vec operator* (double, vec); |
| 10 | - | cube (const cube& A){x=A.x;y=A.y;z=A.z;r=A.r;}
|
| 10 | + | friend vec toVec(double x, double y, double z); |
| 11 | - | void operator=(const cube& A){x=A.x; y=A.y; z=A.z; r=A.r;}
|
| 11 | + | void show(void) {
|
| 12 | - | friend cube operator-(cube,cube); |
| 12 | + | cout<<endl<<"X: "; |
| 13 | - | friend cube operator*(cube, double); |
| 13 | + | cout<<x; |
| 14 | - | friend cube tranform(double,double,double,double); |
| 14 | + | cout<<endl<<"Y: "; |
| 15 | - | }; |
| 15 | + | cout<<y; |
| 16 | cout<<endl<<"Z: "; | |
| 17 | - | class a_cube {
|
| 17 | + | cout<<z; |
| 18 | - | private: |
| 18 | + | cout<<endl; |
| 19 | - | cube *x; //указатель на куб |
| 19 | + | |
| 20 | }; | |
| 21 | - | public: |
| 21 | + | |
| 22 | - | a_cube(int); |
| 22 | + | vec toVec (double x, double y, double z) {
|
| 23 | - | a_cube(const a_cube&); |
| 23 | + | vec v; |
| 24 | - | ~a_cube(); |
| 24 | + | v.x=x; |
| 25 | - | void set(int,cube);//вставляем куб на позицию |
| 25 | + | v.y=y; |
| 26 | - | void operator=(const a_cube&);//оператор присваивания |
| 26 | + | v.z=z; |
| 27 | - | cube operator[](int) const;//возвращаем с позиции |
| 27 | + | return v; |
| 28 | - | friend a_cube operator-(const a_cube&, const a_cube&); |
| 28 | + | |
| 29 | - | friend a_cube operator*(const a_cube&, double);//оператор умножения |
| 29 | + | vec operator+ (vec c, vec d) {
|
| 30 | - | friend a_cube operator*(double, const a_cube&); |
| 30 | + | return toVec(c.x+d.x, c.y+d.y, c.z+d.z);} |
| 31 | - | void show(); |
| 31 | + | |
| 32 | - | void del(int); |
| 32 | + | vec operator* (vec c, double d) {
|
| 33 | return toVec(c.x*d, c.y*d, c.z*d);} | |
| 34 | ||
| 35 | - | void a_cube::del(int N){
|
| 35 | + | vec operator* (double c, vec d) {
|
| 36 | - | cube *tmp; |
| 36 | + | return toVec(c*d.x, c*d.y, c*d.z);} |
| 37 | - | tmp=new cube[n-1]; |
| 37 | + | |
| 38 | - | for(int i=0;i<N;i++) |
| 38 | + | class arr_vec {
|
| 39 | - | tmp[i]=x[i]; |
| 39 | + | private: double *x, *y, *z; |
| 40 | - | for(int i=N+1;i<n;i++) |
| 40 | + | |
| 41 | - | tmp[i-1]=x[i]; |
| 41 | + | public: arr_vec(int); |
| 42 | - | delete[]x; |
| 42 | + | ~arr_vec(); |
| 43 | - | x=tmp; |
| 43 | + | void set(int, vec); |
| 44 | - | n--; |
| 44 | + | vec operator[] (int) const; |
| 45 | void operator=(const arr_vec&); | |
| 46 | friend arr_vec operator+ (const arr_vec&, const arr_vec&); | |
| 47 | - | a_cube::a_cube(const a_cube& A){//копиконструктор
|
| 47 | + | friend arr_vec operator* (double, const arr_vec&); |
| 48 | - | n=A.n; |
| 48 | + | friend arr_vec operator* (const arr_vec&, double); |
| 49 | - | x=new cube [n]; |
| 49 | + | void show(); |
| 50 | - | for(int i=0;i<n;i++) |
| 50 | + | |
| 51 | - | x[i]=A.x[i]; |
| 51 | + | void arr_vec::operator =(const arr_vec& A) {
|
| 52 | n=A.n; | |
| 53 | x= new double [n]; | |
| 54 | - | void a_cube::operator=(const a_cube& A){//оператор присваивания
|
| 54 | + | y=new double[n]; |
| 55 | - | n=A.n; |
| 55 | + | z=new double [n]; |
| 56 | - | x=new cube[n]; |
| 56 | + | for(int i=0; i<n; i++) {x[i]=A.x[i]; y[i]=A.y[i]; z[i]=A.z[i];}
|
| 57 | - | for(int i=0;i<n;i++) |
| 57 | + | |
| 58 | - | x[i]=A.x[i]; |
| 58 | + | |
| 59 | - | } |
| 59 | + | arr_vec::arr_vec(int N) {
|
| 60 | - | cube tranform(double x, double y, double z, double r) {
|
| 60 | + | n=N; |
| 61 | - | cube tmp; |
| 61 | + | x=new double[n]; |
| 62 | - | tmp.x=x; |
| 62 | + | y=new double[n]; |
| 63 | - | tmp.y=y; |
| 63 | + | z=new double[n]; |
| 64 | - | tmp.z=z; |
| 64 | + | for(int i=0; i<n; i++) {x[i]=y[i]=z[i]=1;}
|
| 65 | - | tmp.r=r; |
| 65 | + | |
| 66 | - | return tmp; |
| 66 | + | arr_vec::~arr_vec() {
|
| 67 | - | } |
| 67 | + | delete[]x; |
| 68 | delete[]y; | |
| 69 | - | a_cube::a_cube(int N){//конструктор
|
| 69 | + | delete[]z; |
| 70 | - | n=N; |
| 70 | + | |
| 71 | - | x=new cube[n]; |
| 71 | + | void arr_vec::set(int N, vec vvv) {
|
| 72 | if (n<N) return; | |
| 73 | - | a_cube::~a_cube(){//деструктор
|
| 73 | + | x[N]=vvv.x; |
| 74 | - | delete[]x; |
| 74 | + | y[N]=vvv.y; |
| 75 | z[N]=vvv.z; | |
| 76 | - | void a_cube::set(int N, cube tmp){
|
| 76 | + | |
| 77 | - | if(n<N) return; |
| 77 | + | vec arr_vec::operator [](int N) const {
|
| 78 | - | x[N]=tmp; |
| 78 | + | return toVec(x[N], y[N], z[N]); |
| 79 | } | |
| 80 | - | cube a_cube::operator[](int N)const{
|
| 80 | + | arr_vec operator+ (const arr_vec& c, const arr_vec& d) {
|
| 81 | - | return x[N]; |
| 81 | + | arr_vec *e; |
| 82 | e=new arr_vec(c.n); | |
| 83 | - | a_cube operator-(const a_cube& a, const a_cube& b){
|
| 83 | + | for(int i=0; i<e->n; i++) e->set(i, c[i]+d[i]); |
| 84 | - | a_cube c(a.n); |
| 84 | + | return *e; |
| 85 | - | for(int i=0;i<c.n;i++) |
| 85 | + | |
| 86 | - | c.set(i,a[i]-b[i]); |
| 86 | + | arr_vec operator* (double c, const arr_vec& d) {
|
| 87 | - | return c; |
| 87 | + | arr_vec *e; |
| 88 | e=new arr_vec(d.n); | |
| 89 | for (int i=0; i<e->n; i++) e->set(i, c*d[i]); | |
| 90 | - | cube operator-(cube a, cube b){
|
| 90 | + | return *e; |
| 91 | - | return tranform(a.x-b.x,a.y-b.y,a.z-b.z,a.r-b.r); |
| 91 | + | |
| 92 | arr_vec operator* (const arr_vec& c, double d) {
| |
| 93 | - | cube operator*(cube a, double b){
|
| 93 | + | arr_vec *e; |
| 94 | - | return tranform(a.x*b,a.y*b,a.z*b,a.r*b); |
| 94 | + | e=new arr_vec(c.n); |
| 95 | for (int i=0; i<e->n; i++) e->set(i, c[i]*d); | |
| 96 | - | a_cube operator*(const a_cube& a, double k){
|
| 96 | + | return *e; |
| 97 | - | a_cube c(a.n); |
| 97 | + | |
| 98 | - | for(int i=0;i<c.n;i++) |
| 98 | + | void arr_vec::show() {
|
| 99 | - | c.set(i, a[i]*k); |
| 99 | + | cout<<endl<<"X: "; |
| 100 | - | return c; |
| 100 | + | for(int i=0; i<n; i++) cout<<x[i]<<"\t"; |
| 101 | cout<<endl<<"Y: "; | |
| 102 | for(int i=0; i<n; i++) cout<<y[i]<<"\t"; | |
| 103 | - | a_cube operator*(double k, const a_cube& a){
|
| 103 | + | cout<<endl<<"Z: "; |
| 104 | - | return a*k; |
| 104 | + | for(int i=0; i<n; i++) cout<<z[i]<<"\t"; |
| 105 | cout<<endl; | |
| 106 | } | |
| 107 | - | void a_cube::show(){
|
| 107 | + | |
| 108 | - | cout<<endl<<"X:"; for(int i=0;i<n;i++) cout<<x[i].x<<" "; |
| 108 | + | |
| 109 | - | cout<<endl<<"Y:"; for(int i=0;i<n;i++) cout<<x[i].y<<" "; |
| 109 | + | |
| 110 | - | cout<<endl<<"Z:"; for(int i=0;i<n;i++) cout<<x[i].z<<" "; |
| 110 | + | |
| 111 | - | cout<<endl<<"R:"; for(int i=0;i<n;i++) cout<<x[i].r<<" "; |
| 111 | + | arr_vec c(2), d(2); |
| 112 | - | cout<<endl; |
| 112 | + | vec e, f; |
| 113 | e=toVec(1,2,3); | |
| 114 | f=toVec(4,5,6); | |
| 115 | c.set(0, e); | |
| 116 | c.show(); | |
| 117 | c=c+c; | |
| 118 | c.show(); | |
| 119 | (c[0]).show(); | |
| 120 | ||
| 121 | } |