Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 8
1

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

25.06.2017, 23:11. Показов 652. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ругается на операторы != и < в 208 - 209 строках. На сколько я понял нужно перегрузить их.
Можете помочь дописать, ну или обьяснить дословно что и куда дописывать.


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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
#include "stdafx.h"
#include <iostream>
#include <locale.h>
#include <string>
 
using namespace std;
 
class participant  //базовый класс
{
public:
 
    string surname, phone, address;
 
    participant() //конструктор
    {
        surname = ""; phone = ""; address = "";
    };
 
    void set_participant()
    {
        cout << "Введите фамилию: "; cin >> surname;
        cout << "Введите телефон: "; cin >> phone;
        cout << "Введите адрес:   "; cin >> address;
    };
 
    void print()
    {
        cout << "Фамилия: " << surname << endl
            << "Телефон: " << phone << endl
            << "Адрес: " << address << endl;
    };
};
 
class member_queue : public participant  //производный класс "Участник очереди"
{
public:
 
    struct TDate {
        int day, month, year;
    };
 
    TDate date;
    int num, exemption;
 
    int is_leap(int y) // високосный год или нет
    {
        return (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) ? 1 : 0;
    };
 
    bool right_date(TDate d)
    {
        switch (d.month)
        {
        case 1: case 3: case 5: case 7: case 8: case 10: case 12:
            if (d.day < 1 || d.day > 31) { return false; exit(0); }
            break;
 
        case 4: case 6: case 9: case 11:
            if (d.day < 1 || d.day > 30) { return false; exit(0); }
            break;
 
        case 2:
            if (d.day < 1 || d.day > 28 + is_leap(d.year)) { return false; exit(0); }
            break;
        };
        return true;
    };
 
    member_queue() : participant()  //конструктор
    {
        date.day = 1; date.month = 1;  date.year = 2000;
        exemption = 0;
        num = 1;
    };
 
    void set_member_queue()
    {
        participant::set_participant();
        do
        {
            cout << "\n===Дата постановки на учет===" << endl;
            cout << "Введите день: ";  cin >> date.day;
            cout << "Введите месяц: "; cin >> date.month;
            cout << "Введите год: ";   cin >> date.year;
            if (right_date(date) == false) cout << "\nНеверная дата\n";
        } while (right_date(date) == false);
 
        do
        {
            cout << "Наличие льгот (0 - нет, 1 - да): ";
            cin >> exemption;
        } while (exemption < 0 || exemption > 1);
        cout << "Порядковый номер в очереди: "; cin >> num;
    };
 
    void print()
    {
        participant::print();
        cout << "Дата постановки на учет: " << date.day << '.' << date.month << '.' << date.year << endl
            << "Наличие льгот: " << ((exemption == 0) ? "Нет" : "Есть") << endl
            << "Порядковый номер в очереди: " << num << endl;
    };
 
    void operator--() { exemption ^= 1; };
    bool operator<(TDate) const;
    bool operator!=(TDate) const;
};
 
class conference_participant : public participant  //производный класс "Участник выездной конференции"
{
public:
 
    class TTime {
    public: int h, m, s;
    };
 
    TTime duration;
    int need;
    string time1, time2;
 
    bool right_time(TTime x)
    {
        return (x.h < 0 && x.h > 23 && x.m < 0 && x.m > 59 && x.s < 0 && x.s > 59) ? false : true;
    };
 
    conference_participant() : participant()  //конструктор
    {
        need = 0; duration.h = 0; duration.m = 0; duration.s = 0;
        time1 = ""; time2 = "";
    };
 
    void set_conference_participant()
    {
        participant::set_participant();
        do
        {
            cout << "Нуждается в поселении? (0 - нет, 1 - да) ";
            cin >> need;
        } while (need < 0 || need > 1);
 
        do
        {
            cout << "===Продолжительность доклада===" << endl;
            cout << "Часов: ";  cin >> duration.h;
            cout << "Минут: ";  cin >> duration.m;
            cout << "Секунд: "; cin >> duration.s;
        } while (right_time(duration) == false);
        cout << "Время начала работы конференции: "; cin >> time1;
        cout << "Время начала выступления: "; cin >> time2;
    };
 
    void print()
    {
        participant::print();
        cout << "Нуждается в послелении? - " << ((need != 0) ? "Да" : "Нет") << endl
            << "Продолжительность доклада: " << duration.h << ':' << duration.m << ':' << duration.s << endl
            << "Время начала работы конференции: " << time1 << endl
            << "Время начала выступления: " << time2 << endl;
    };
 
    void operator--() { need ^= 1; };
    bool operator<(TTime) const;
    bool operator!=(TTime) const;
};
 
bool member_queue :: operator<(TDate x) const
{
    return (date.year < x.year) ? true : false;
    if (date.year == x.year) return (date.month < x.month) ? true : false;
    if (date.month == x.month) return (date.day < x.day) ? true : false;
    if (date.day == x.day) return false;
};
 
bool member_queue :: operator!=(TDate x) const
{
    return (date.year != x.year && date.month != x.month && date.day != x.day) ? true : false;
}
 
bool conference_participant :: operator<(const TTime x) const
{
    return (duration.h < x.h) ? true : false;
    if (duration.h == x.h) return (duration.m < x.m) ? true : false;
    if (duration.m == x.m) return (duration.s < x.s) ? true : false;
    if (duration.s == x.s) return false;
};
 
bool conference_participant :: operator!=(TTime x) const
{
    return (duration.h != x.h && duration.m != x.m && duration.s != x.s) ? true : false;
};
 
int main()
{
    setlocale(LC_ALL, "Russian");
    participant obj1;
    member_queue obj2;
    conference_participant obj3, obj4;
 
    obj1.set_participant();
    obj1.print();
 
    obj2.set_member_queue();
    obj2.print();
 
    obj3.set_conference_participant();
 
    obj4.set_conference_participant();
    if (obj3 != obj4) cout << "1";
    cout << (obj3.duration < obj4.duration) ? "1 меньше" : "2 меньше";
 
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2017, 23:11
Ответы с готовыми решениями:

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

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

Перегрузка операторов
Объясните, пожалуйста, что означает, эта строка? return a != t1.a &amp;&amp; b != t1.b ? 1 : 0; что...

Перегрузка операторов
Помогите с задачей на перегрузку операторов. (ппц мозговынос). 1)Создать class Mouse со...

7
26 / 26 / 32
Регистрация: 27.11.2016
Сообщений: 70
26.06.2017, 00:09 2
Вместо этого:
Цитата Сообщение от Mrstx Посмотреть сообщение
cout << (obj3.duration < obj4.duration) ? "1 меньше" : "2 меньше";
(obj3.duration < obj4.duration) ? std::cout << "1 меньше" : std::cout << "2 меньше";
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
26.06.2017, 01:39 3
возможно это
C++
1
cout << (obj3.duration < obj4.duration) ? "1 меньше" : "2 меньше";
надо изменить на это
C++
1
cout << (obj3.duration < obj4.duration ? "1 меньше" : "2 меньше");
0
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 8
26.06.2017, 01:53  [ТС] 4
Ничего не поменялось
Миниатюры
Перегрузка операторов  
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
26.06.2017, 02:22 5
Вам пишут, что нужно перегрузить оператор сравнения для obj и obj.duration.
0
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
26.06.2017, 02:28 6
Mrstx, вы прикалываетесь?
Класс: Реализовать класс "участник"
0
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 8
26.06.2017, 10:30  [ТС] 7
Цитата Сообщение от DevAlone Посмотреть сообщение
Вам пишут, что нужно перегрузить оператор сравнения для obj и obj.duration.
А как мне его перегрузить ? Можно дословно обьяснить ?
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
26.06.2017, 12:58 8
Цитата Сообщение от Mrstx Посмотреть сообщение
А как мне его перегрузить ? Можно дословно обьяснить ?
http://en.cppreference.com/w/c... /operators
Тут даже с примерами

Добавлено через 15 секунд
Цитата Сообщение от Mrstx Посмотреть сообщение
А как мне его перегрузить ? Можно дословно обьяснить ?
http://en.cppreference.com/w/c... /operators
Тут даже с примерами
0
26.06.2017, 12:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.06.2017, 12:58
Помогаю со студенческими работами здесь

Перегрузка операторов
Есть класс массив, у него есть перегрузка операторов ввода, вывода. Со стандартными типами данных...

Перегрузка операторов (--, +=, -=, == )
Пожалуйста помогите изменить программу добавив перегрузку операторов (--, +=, -=, == ) MAIN.CPP...

[c++] Перегрузка операторов
Не работает. #include &lt;conio.h&gt; #include &lt;iostream.h&gt; #pragma argsused struct FazzyNumber {...

Перегрузка операторов
ЗАДАЧА 1 Создайте класс Circle (окружность): Реализуйте через перегруженные операторы; ...


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

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