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

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

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

Студворк — интернет-сервис помощи студентам
Ругается на операторы != и < в 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.06.2017, 23:11
Ответы с готовыми решениями:

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

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

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

7
 Аватар для Newus
26 / 26 / 32
Регистрация: 27.11.2016
Сообщений: 70
26.06.2017, 00:09
Вместо этого:
Цитата Сообщение от 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
возможно это
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  [ТС]
Ничего не поменялось
Миниатюры
Перегрузка операторов  
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
26.06.2017, 02:22
Вам пишут, что нужно перегрузить оператор сравнения для obj и obj.duration.
0
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
26.06.2017, 02:28
Mrstx, вы прикалываетесь?
Класс: Реализовать класс "участник"
0
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 8
26.06.2017, 10:30  [ТС]
Цитата Сообщение от DevAlone Посмотреть сообщение
Вам пишут, что нужно перегрузить оператор сравнения для obj и obj.duration.
А как мне его перегрузить ? Можно дословно обьяснить ?
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
26.06.2017, 12:58
Цитата Сообщение от Mrstx Посмотреть сообщение
А как мне его перегрузить ? Можно дословно обьяснить ?
http://en.cppreference.com/w/c... /operators
Тут даже с примерами

Добавлено через 15 секунд
Цитата Сообщение от Mrstx Посмотреть сообщение
А как мне его перегрузить ? Можно дословно обьяснить ?
http://en.cppreference.com/w/c... /operators
Тут даже с примерами
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.06.2017, 12:58
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru