Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
aimbat
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 81
#1

Перегрузка операций - C++

24.05.2014, 13:14. Просмотров 247. Ответов 3
Метки нет (Все метки)

Друзья, помогите с перегрузкой некоторых операций, пожалуйста)
Задание:
Есть угол на плоскости(поля угол и минуты). Перегрузить операторы +, -, ==, !=, <, <=, >, >=. Также должны быть методы: конструктор, деструктор, метод для вывода значения угла на экран, метод перевода значения угла в радианы, метод приведения угла к диапазону 0 - 360.
Вот что у меня есть:
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
#include "kyt.h"
#include <math.h>
#include <iostream>
 
using namespace std;
 
kyt::kyt(int ang, int min):
angle(ang)
,minute(min)
{
}
 
kyt::~kyt()
{
}
 
double kyt::radians()
{
    double p = 3.1415926535;
    double rad = 0;     
    rad = (angle*minute*0,01*(p/180));
    return rad;
}
 
void kyt::print(double rad, int angle)
{
    cout << rad << endl;
    cout << angle << endl;
}
int kyt::reverseit()
{
    if(minute < 0)
        {   angle--;
            minute += 60;
        }
        if(angle > 0) angle = angle%360;
        else angle = angle%360+360;
        return angle;
}
 
kyt kyt::operator+ (const kyt &compl)
{
    this->angle += compl.angle;
    this->minute += compl.minute;
 
    return *this;
}
 
kyt kyt::operator- (const kyt &compl)
{
    this -> angle -= compl.angle;
    this -> minute -= compl.minute;
 
    return *this;
}
И сам класс:
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
#pragma once
 
class kyt
{
    int angle;
    int minute;
 
public:
    kyt(int ang, int min);
    ~kyt(void);
    void print(double rad, int angle);
    
    void print();
    double radians();
    int reverseit();
    
    kyt operator+ (const kyt &compl);
    kyt operator- (const kyt &compl);
    
    kyt operator== (const kyt &comp1);
    kyt operator!= (const kyt &comp1);
    
    kyt operator< (const kyt &comp1);
    kyt operator<= (const kyt &comp1);
    
    kyt operator> (const kyt &comp1);
    kyt operator>= (const kyt &comp1);
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2014, 13:14     Перегрузка операций
Посмотрите здесь:

Перегрузка операций - C++
Здравствуйте, помогите реализовать программу: Класс - множество set. Дополнительно перегрузить следующие операции: + - добавить элемент в...

Перегрузка операций - C++
Добрый вечер, имеется код нахождения параллельности двух прямых или же угла между ними, который нужно разбить на библиотеку, которая будет...

Перегрузка операций << и >> - C++
Всем добрый день.. У меня такая проблема, не получается перегрузить операторы &lt;&lt; и &gt;&gt; для своего класса, делаю вот так: class CMPLX ...

Перегрузка операций - C++
#include &lt;iostream&gt; using namespace std; class chislo { public: chislo(); chislo(int a,int b); chislo(const chislo&amp;); ...

Перегрузка операций. - C++
Предусмотреть ввод исходных данных с клавиатуры, файла и используя датчик случайных чисел. Написать тестовую программу. Построить класс,...

Перегрузка операций - C++
Задание у меня перегрузить операции: + добавить элемент в множество; * пересечение множеств; int() мощность множества. Вот...

Перегрузка операций - C++
C++ ругается когда я пытаюсь сделать след-ю перегрузку операций. У меня трехмерный массив matrix и в цикле мне нужно использовать не...

Перегрузка операций - C++
C++ Перегрузка операций.. Помоги написать прогу Определить класс для работы с квадратной матрицей. Получить величину к одним из...

Перегрузка операций - C++
Добрый день форумчане, помогите решить задачку Перегрузить 8 операторов для класса Вот пример класса class Money{ unsigned long...

Перегрузка операций - C++
Добрый день! Задание простенькое но не могу решить так как не получается перегрузка операций. Задание: Вычислить точное значение суммы...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
5124 / 4444 / 1482
Регистрация: 14.04.2014
Сообщений: 17,665
24.05.2014, 14:30     Перегрузка операций #2
То, что ты написал для "+" и "-" - это фактически "+=" и "-=", для выражения типа "a = b + c" не пригодно.
Надо примерно так:
C++
1
2
3
4
5
    kyt kyt::operator + (const kyt &n)
    {
                ...
        return kyt(a, m);
    };
a и m - это новые значения.
Логические возвращают bool и записываются примерно так:
C++
1
2
3
4
bool kyt::operator == (const kyt &n)
    {
        return (angle == n.angle) && (minute == n.minute);
    };
предполагая, что углы положительны и не превышают 360.
aimbat
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 81
24.05.2014, 15:30  [ТС]     Перегрузка операций #3
А операторы сравнения?
nmcf
5124 / 4444 / 1482
Регистрация: 14.04.2014
Сообщений: 17,665
24.05.2014, 17:22     Перегрузка операций #4
Ну я же привёл пример для операции "==". Остальные аналогично записываются, отличие в том как условие проверяется.
У тебя допустимые значения для угла какие? Может быть отрицательный угол? Может быть больше 360 или, скажем, 370 сразу преобразуется в 10? Вот от этого зависит сама проверка условий.
Yandex
Объявления
24.05.2014, 17:22     Перегрузка операций
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru