4 / 4 / 0
Регистрация: 11.09.2017
Сообщений: 99
1

Перегрузка операторов

04.04.2022, 22:00. Показов 299. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здраствуйте, мне сказали перегрузить операторы с с++, но я не понимаю как это сделать в моём приложении. Подскажите пожалуйста

main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <stdlib.h>
#include <cmath>
#include "func.h"
 
using namespace std;
 
#define pi 3.14
 
void Triangle::GetData()
{
    std::cout << "Enter 2 sides and angle between them: ";
    std::cin >> a >> b >> c1;
}
 
void Triangle::CountType()
{
    if (c1 == 90) std::cout << "Type: right\t"; else
        if (c1 > 90) std::cout << "Type: obtuse\t"; else
            if (c1 < 90) std::cout << "Type: acute\t";
}
 
void Triangle::CountH()
{
    c = sqrt(pow(a, 2) + pow(b, 2) - (2 * a * b * cos(c1 * pi / 180)));
    p = (a + b + c) / 2;
    H = (2 * sqrt(p * (p - a) * (p - b) * (p - c)) / c);
}
 
void Triangle::CountAngles()
{
    a1 = acos((pow(b, 2) + pow(c, 2) - pow(a, 2)) / (2 * b * c)) * 180 / pi;
    b1 = acos((pow(a, 2) + pow(c, 2) - pow(b, 2)) / (2 * a * c)) * 180 / pi;
}
 
void Triangle::CountMinAngle()
{
    m = (a1 < b1) ? a1 : b1;
    m1 = (c1 < m) ? c1 : m;
}
 
double operator+(const Triangle&, const Triangle&) {
 
};
 
double operator-(const Triangle&, const Triangle&);
double operator*(const Triangle&, const Triangle&);
double operator/(const Triangle&, const Triangle&);
bool operator==(const Triangle&, const Triangle&);
bool operator>(const Triangle&, const Triangle&);
bool operator<(const Triangle&, const Triangle&);
 
void Triangle::Print()
{
    std::cout << "Height of the triangle \t" << H << std::endl;
    std::cout << "Smallest angle \t" << m1 << std::endl;
    std::cout << "Angles: \t" << a1 << ", " << b1 << ", " << c1 << std::endl;
}
func.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma once
 
class Triangle
{
    int a, b, c1;
    double c, a1, b1, p, m, m1, H;
 
public:
 
    Triangle();
    void GetData();
    void CountType();
    void CountH();
    void CountAngles();
    void CountMinAngle();
    void Print();
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2022, 22:00
Ответы с готовыми решениями:

Перегрузка оператор ввода вывода и перегрузка арифметических операторов С++
Создать класс Time для работы со временем в формате «час:минута:секунда». Класс должен включать в...

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this
Добрый день . Помогите понять принцип работы перегрузки операторов. объясните пожалуйста в...

Перегрузка операторов
Доброй ночи! Изучаю перегрузку операторов. Создал класс Дробь, где в качестве данных выступают...

Перегрузка операторов
Добавить целое число в очередь (operator&lt;&lt;) Взять число из очереди (operator&gt;&gt;) Студия жалуется...

3
1709 / 1109 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
04.04.2022, 22:09 2
Цитата Сообщение от dimazavt Посмотреть сообщение
double operator+(const Triangle&, const Triangle&) {
};
double operator-(const Triangle&, const Triangle&);
double operator*(const Triangle&, const Triangle&);
double operator/(const Triangle&, const Triangle&);
bool operator==(const Triangle&, const Triangle&);
bool operator>(const Triangle&, const Triangle&);
bool operator<(const Triangle&, const Triangle&);
Это в хедер. Действуй по аналогии с ф-ями класса.

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от dimazavt Посмотреть сообщение
double operator-(const Triangle&, const Triangle&);
double operator*(const Triangle&, const Triangle&);
double operator/(const Triangle&, const Triangle&);
Вообще, конечно, интересно выглядит в контексте треугольников)

0
4 / 4 / 0
Регистрация: 11.09.2017
Сообщений: 99
04.04.2022, 22:10  [ТС] 3
Folian, не подскажите как это должно выглядеть?

больше не меньше) Сделаем обратный треугольник
0
1709 / 1109 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
04.04.2022, 22:33 4
Цитата Сообщение от dimazavt Посмотреть сообщение
не подскажите как это должно выглядеть?
Это по-разному может выглядеть.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
 
struct A
{
    int x;
    int y;
 
    A& operator *= (const A&);
    friend bool operator > (const A&, const A&);
};
 
A& A::operator *= (const A& a)
{
    x *= a.x;
    y *= a.y;
    return *this;
}
 
bool operator > (const A& a, const A& b)
{
    return a.x + a.y > b.x + b.y;
}
 
int main()
{
    A g { 13, 22 };
    A j { -1, -2 };
    
    std::cout << std::boolalpha << (g > j) << "\n";
    g *= j;
    std::cout << std::boolalpha << (g > j) << "\n";
 
    return 0;
}
Смотря чо ты там хочешь изобразить.
0
04.04.2022, 22:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2022, 22:33
Помогаю со студенческими работами здесь

Перегрузка операторов
Здравствуйте все. Начали проходить ООП, но хотелось бы узнать больше, подскажите пожалуйста кто...

Перегрузка операторов
Добрый вечер. Не подскажите, в чём дело? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; struct...

Перегрузка операторов
Перегрузить оператор ввода, вывода для строки; Перегрузить операторы: +, =, +=, &gt;, &lt;, == .

Перегрузка операторов
Здравствуйте! Сейчас читаю книгу: &quot;Искусство программирование на С++&quot; Шилдта. Часто встречается...

Перегрузка операторов
Здравствуйте! Пытаюсь понять синтаксис перегрузки операторов: Вот код: // Overload...

Перегрузка операторов
Привет, у меня есть код, но когда я его делал у меня возникла пара вопросов. #include &lt;iostream&gt;...

Перегрузка операторов
Я новичек в С++, столкнулась с перегрузкой операторов. Подскажите пожалуйста в чем принципиальное...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru