Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- class Triada {
- public:
- Triada(){//конструтор по умолчанию,делаем нулевую тройку
- data = new double[size];
- for (int i = 0; i < size; ++i)
- data[i] = 0;
- }
- Triada(const double x,const double y, const double z) {//задаем тройку пользовательскими числами,
- data = new double[size]; //const позволяет нам вводить не только имена переменных,но и просто числа
- data[0] = x;
- data[1] = y;
- data[2] = z;
- }
- Triada(const Triada& triada) {//конструктор копирования
- data = new double[size];
- for (int i = 0; i < size; ++i)
- data[i] = triada.data[i];
- }
- ~Triada() {//деструктор-очищает поля с динамической памятью
- delete[] data;
- }
- Triada operator+(Triada triada) {
- for (int i = 0; i < size; ++i)
- data[i] += triada.data[i];
- return *this;
- }
- double operator*(Triada triada) {
- return (data[0] * triada.data[0] + data[1] * triada.data[1] + data[2] * triada.data[2]);
- }
- Triada operator*(const double number) {
- for (int i = 0; i < size; ++i)
- data[i] *= number;
- return *this;
- }
- private:
- int size = 3;
- double* data;
- };
- class Vector :public Triada {
- public:
- Vector() {
- v_data = new double[v_size];
- for (int i = 0; i < v_size; ++i)
- v_data[i] = 0;
- }
- Vector(const double x, const double y, const double z) {
- v_data = new double[v_size];
- v_data[0] = x;
- v_data[1] = y;
- v_data[2] = z;
- }
- Vector(const Vector& vector) {
- v_data = new double[v_size];
- for (int i = 0; i < v_size; ++i)
- v_data[i] = vector.v_data[i];
- }
- ~Vector() {
- delete[] v_data;
- }
- double Module(){
- return(sqrt(pow(v_data[0],2) + pow(v_data[1],2) + pow(v_data[2],2)));
- }
- double Scalar( Vector& v2) {
- return (*this*v2);
- }
- Vector summary( Vector& v2) {
- /*Triada sum = *this + v2;
- return (reinterpret_cast<Vector&>(sum));*/
- return(*this + v2);
- }
- friend std::ostream& operator<<(std::ostream& out, const Vector& v) {
- for (int i = 0; i <3; ++i)
- out << v.v_data[i];
- return out;
- }
- private:
- double* v_data;
- int v_size = 3;
- };
- int main() {
- Vector vec1(1, 2, 3);
- Vector vec2(2, 4, 8);
- std::cout<<"First vector " << vec1<< "\n";
- std::cout <<"Second vector "<< vec2 << "\n";
- ;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement