1 Востаннє редагувалося koala (12.12.2018 21:18:51)

Тема: Допоможіть завершити код!

Написати програму алгоритмічною мовою С++. Реалізувати заданий класовий тип із заданими методами, використовуючи механізм перевантаження функцій та операцій, а також значення параметрів за замовчуванням. Написати фрагмент програми з використанням класового типу та заданих методів.

Задано трикутник в просторі [p1;p2;p3]

Конструктор повинен визначати довільний або рівносторонній трикутник в центрі координат. Визначення периметра. Перевантажити операції ==, виводу <<, вводу >>, а також дружню операцію <<= для повороту трикутника на кут α.

Більша частина коду написана не розумію як виконати пункт, перевантажити дружню операцію для повороту трикутника на кут α.


Code:

#ifndef TRIANGLE_H
#define TRIANGLE_H
#include <cmath>
#include <iostream>
using namespace std;
class triangle
{
private:
    struct point {
        float x;
        float z; 
        float y;
    };
    point p1, p2, p3;
    double a, b, c;
    double square;
    double perimetr;
public:
    triangle() { p1.x = p2.x = p3.x = 0; square = 0; }
    //triangle(int A, int B, int C) { p1 = A; p2 = B; p3 = C; double p = (double)(a + b + c) / 2; square = pow((p*(p - a)*(p - b)*(p - c)), 0.5); }
    friend ostream & operator<<(ostream &os, const triangle & triangl) {
        os << "p1 : " << endl;
        os << "x = " << p1.x << endl;
        os << "y = " << p1.y << endl;
        os << "z = " << p1.z << endl;

        os << "p2 : " << endl;
        os << "x = " << p2.x << endl;
        os << "y = " << p2.y << endl;
        os << "z = " << p2.z << endl;

        os << "p1 : " << endl;
        os << "x = " << p3.x << endl;
        os << "y = " << p3.y << endl;
        os << "z = " << p3.z << endl;
        return os;
    }
    friend istream & operator>>(istream &is, triangle & triangl) {
        cout << "Enter p1 : " << endl;
        cout << "Enter x : ";
        is >> p1.x;
        cout << "Enter y : ";
        is >> p1.y;
        cout << "Enter z : ";
        is >> p1.z;

        cout << "Enter p2 : " << endl;
        cout << "Enter x : ";
        is >> p2.x;
        cout << "Enter y : ";
        is >> p2.y;
        cout << "Enter z : ";
        is >> p2.z;

        cout << "Enter p3 : " << endl;
        cout << "Enter x : ";
        is >> p3.x;
        cout << "Enter y : ";
        is >> p3.y;
        cout << "Enter z : ";
        is >> p3.z;
        
        //a = sqrt(p1)
        return is;
    }
    void calculatePerimetr() {


    }
    const bool operator==(const triangle & right) {
        if ()
            return true;
        return false;
    }
    friend triangle & operator<<=(triangle & triangle, const double & alfa) {




    }
};

2

Re: Допоможіть завершити код!

Надалі користуйтеся тегом code (кнопка <>) самостійно.
Я теж не дуже розумію, що вони мають на увазі під "поворотом на кут α" у тривимірному просторі; припустимо, мова йде про поворот навколо вісі OZ, тобто всі координати z лишаються, як були, а координати x та y обертаються навколо центру площини XOY за годинниковою стрілкою. Можете самостійно вивести формули для нових координат, вони нескладні; можете пошукати матрицю; а можете просто взяти формули зі сторінки про матрицю. Тільки не забувайте, що треба спершу обчислити нові x та y, а потім їх присвоїти старим.