View difference between Paste ID: hC7DMqLq and xT95h0em
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
}