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

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

Войти
Регистрация
Восстановить пароль
 
cj3687
2 / 2 / 0
Регистрация: 10.10.2013
Сообщений: 43
#1

Перегрузка оператора вывода в классе "Время" - C++

20.05.2014, 18:44. Просмотров 208. Ответов 2
Метки нет (Все метки)

Здравствуйте. Столкнулся с проблемой при работе с классом (Время), что выводит или чушь или вообще ничего не выводит. Прописал (вроде бы) 1 функцию и 1 оператор.

заголовочный файл:
Кликните здесь для просмотра всего текста
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
// ctime.h
 
#include <iostream.h>
 
class CTime {
 
    private:
        int hour;      //?anu
        int minute;    //ieioou
        int seconds;   //naeoiau
 
    public:
        CTime( int, int, int );
        ~CTime();
 
        CTime operator+ ( CTime );   //iia?aoi? nei?aiey
        CTime operator- ( CTime );   //iia?aoi? au?eoaiey
        bool  operator==( CTime );  //iia?aoi? ?aaainoaa
        bool  operator> ( CTime );   //iia?aoi? n?aaiaiey
        bool  operator< ( CTime );   //iia?aoi? n?aaiaiey
        friend ostream& operator<<(ostream&, const CTime&);    
        friend istream& operator>>(istream&, CTime&);          
        
        bool isNight ();        //i?iaa?ea ia a?aiy aiy: Ii?u, Aaiu, Oo?i, Aa?a?
        bool isDay ();
        bool isMorning ();
        bool isEvening ();
        void PrintT ();
        void Convert();
};
 
//////////////////////////////////////////////////////////
 
CTime :: CTime( int nHour, int nMunute, int nSeconds)
{
}
 
//////////////////////////////////////////////////////////
 
CTime :: ~CTime()
{
}
 
//////////////////////////////////////////////////////////
 
CTime CTime :: operator+( CTime tm )
{
    CTime t( this -> hour, this -> minute,this -> seconds );
 
    t.hour    += tm.hour;
    t.minute  += tm.minute;
    t.seconds += tm.seconds;
 
    if (t.seconds >= 60) {
        do {
            t.seconds -= 60;
            t.minute  += 1;
        } while (t.seconds >= 60);
    }
 
    if (t.minute >= 60) {
        do {
            t.minute -= 60;
            t.hour += 1;
        } while(t.minute >= 60);
    }
 
    if(t.hour >= 24) {
        t.hour = t.hour % 24;
    }
 
    return t;
}
 
//////////////////////////////////////////////////////////
 
CTime CTime :: operator-( CTime tm )
{
    CTime t(this->hour, this->minute, this->seconds);
 
    t.hour    -= tm.hour;
    t.minute  -= tm.minute;
    t.seconds -= tm.seconds;
 
    if(t.seconds < 0) {
        t.seconds += 60;
        t.minute  -= 1;
    }
 
    if(t.minute < 0) {
        t.minute += 60;
        t.hour   -= 1;
    }
 
    if(t.hour < 0) {
        t.hour = -t.hour;
    }
 
    return t;
}
 
//////////////////////////////////////////////////////////
 
bool CTime :: operator==( CTime t )
{
    return (this -> hour == t.hour && this -> minute == t.minute && this -> seconds == t.seconds);
}
 
//////////////////////////////////////////////////////////
 
bool CTime :: operator>( CTime t )
{
    return (this -> hour > t.hour);
}
 
//////////////////////////////////////////////////////////
 
bool CTime :: operator<( CTime t )
{
    return (this -> hour < t.hour);
}
 
//////////////////////////////////////////////////////////
 
bool CTime :: isNight()
{
    return (this -> hour < 6);
}
 
//////////////////////////////////////////////////////////
 
bool CTime :: isMorning()
{
    return (this -> hour >= 6 && this -> hour < 12);
}
 
//////////////////////////////////////////////////////////
 
bool CTime :: isDay()
{
    return (this -> hour >= 12 && this -> hour < 18);
}
 
//////////////////////////////////////////////////////////
 
bool CTime :: isEvening ()
{
    return (this -> hour >= 18 && (this -> hour < 23 && this -> minute < 59 && this -> seconds < 59));
}
//Вот я попытался функцией
void CTime :: PrintT ()
{
    std::cout<<this -> hour<<":"<<this -> minute<<":"<<this -> seconds<<endl;
}
 
//Не работает :(
istream& operator>>(istream &input, CTime &t){
 
    cout << "Enter hour: ";
    input >> t.hour;
    cout << "Enter minute: ";
    input >> t.minute;
    cout << "Enter seconds: ";
    input >> t.seconds;
    return input;
}
 //А вот оператор
ostream& operator<<(ostream &output, const CTime &t){
 
    
    
    output<<t.hour<<":"<<t.minute<<":"<<t.seconds<<endl;
    
    return output;
}
 
 
 
void CTime :: Convert()
{
}


Файл 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
#include <iostream>
#include "ctime.h"
 
 
using namespace std;
 
using namespace std;
 
 
int main()
{
    int h,m,s;
    cout << "Enter hour: ";
    cin >> h;
    cout << "Enter minute: ";
    cin >> m;
    cout << "Enter seconds: ";
    cin >> s;
    CTime D(1,2,3);
    cout<<"A:\n";
    CTime A(h,m,s);
    cout<< A<<endl;
    cout<<"\nB:\n";
    CTime B (15, 16, 20);
    cout << B;
;
    CTime C = A + B;
    cout<<"\nC:\n";
    cout << C;
    C = A - B;
    cout<<"\nC:\n";
    cout << C;
    C = B - A;
    cout<<"\nC:\n";
    cout << C;
    if (A.isNight()) cout<<"\nNight\n";
    if (A.isDay()) cout<<"\nDay\n";
    if (A.isMorning()) cout<<"\nMorning\n";
    if (A.isEvening()) cout<<"\nEvening\n";
    cout << "\n" ;
    if (A == B) cout<< "\nA==B\n"; 
       else cout<<"\n A!=B \n";
    CTime PrintT(A);
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2014, 18:44     Перегрузка оператора вывода в классе "Время"
Посмотрите здесь:

Перегрузка дружественного оператора вывода в шаблонном классе - C++
Здравствуйте! Я не могу понять как мне правильно сделать перегрузку оператора вывода ввывода в шаблонном классе ...

Перегрузка оператора "++" и "--" , компилирует, но при запуске программы - ошибка - C++
#include &lt;iostream&gt; #include&lt;ctime&gt; #include&lt;stdio.h&gt; #include&lt;locale.h&gt; #include &lt;windows.h&gt; #include &lt;conio.h&gt; ...

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

Класс "Матрица", перегрузка оператора "+" - C++
Здравствуйте. Создаю класс матрица, в нём перегружаю оператор &quot;+&quot;. На этапе компиляции всё замечательно, но при запуске программа вылетает....

Перегрузка оператора ввода ">>" - C++
нужно перегрузить оператор ввода для класса Comp? перегрузил, но выдается ошибка error C2248: 'std::basic_ios&lt;_Elem,_Traits&gt;::basic_ios'...

Перегрузка оператора "+" с шаблонами - C++
нужно написать перегрузку оператора +, который объединяет 2 массива структур в один. допустим, есть вот такая вот структура struct...

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

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

Перегрузка оператора "=" - C++
Ввести строку символов S1. Программа должна содержать перегруженную операцию “=”, использование которой скопирует S1 в S2 при следующих...

Перегрузка оператора "+" - C++
Доброго времени суток! Задание звучит так: Написать класс для работы с длинными числами. Создается два экземпляра класса, после...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6290 / 5893 / 1911
Регистрация: 18.12.2011
Сообщений: 15,132
Завершенные тесты: 1
20.05.2014, 19:01     Перегрузка оператора вывода в классе "Время" #2
C++
1
2
3
4
CTime :: CTime( int nHour, int nMinute, int nSeconds):
hour(nHour),minute(nMinute),seconds(nSeconds)
{
}
cj3687
2 / 2 / 0
Регистрация: 10.10.2013
Сообщений: 43
20.05.2014, 19:24  [ТС]     Перегрузка оператора вывода в классе "Время" #3
А, точно! Спасибо! Все таки с реализацией самой проги походу я начудил, т.к. вывод работает нормально.
Yandex
Объявления
20.05.2014, 19:24     Перегрузка оператора вывода в классе "Время"
Ответ Создать тему
Опции темы

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