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

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

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

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

20.05.2014, 18:44. Просмотров 220. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2014, 18:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка оператора вывода в классе "Время" (C++):

Перегрузка оператора "<<" для вывода пользовательских классов - C++
Всем доброго времени суток. Пытаюсь сделать перегрузку оператора &quot;&lt;&lt;&quot; для того, чтобы можно было выводить объекты пользовательского класса...

Перегрузка оператора "+" в классе - C++
Hello!! Я создаю класс двумерного массива. Использую данный код: template &lt;typename T&gt; class Array2D { public: //...

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

Перегрузка оператора "++" и "--" в чем может быть причина нарушение прав доступа? - C++
Вот такой вот код #include &lt;iostream&gt; class d { private: int size ; char *n; public: d()

Перегрузка оператора "++" и "--" , компилирует, но при запуске программы - ошибка - 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; ...

У меня класс B в классе A, а в классе B рекурсивная функция переопределения оператора "()", как её вызвать, не создавая явно объект класса B? - C++
#include &lt;windows.h&gt; #include &lt;iostream&gt; using namespace std; //Вот главный класс class A{ public: A (){}; class...

2
zss
Модератор
Эксперт С++
6401 / 5967 / 1944
Регистрация: 18.12.2011
Сообщений: 15,367
Завершенные тесты: 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)
{
}
1
cj3687
2 / 2 / 0
Регистрация: 10.10.2013
Сообщений: 43
20.05.2014, 19:24  [ТС] #3
А, точно! Спасибо! Все таки с реализацией самой проги походу я начудил, т.к. вывод работает нормально.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2014, 19:24
Привет! Вот еще темы с ответами:

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

Перегрузка оператора "+", чтобы выполнял "*" - C++
Ребят, привет всем, возник такой вопрос: возможно ли перегрузить оператор &quot;+&quot; так, чтоб выполнялось умножение? Например вводится...

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

Класс "Дробь". Перегрузка оператора "==" - C++
template &lt;class T&gt; void polynomial&lt;T&gt;::refresh(){ //отбрасывающую старшие члены полинома с нулевыми коэффициентами int counter = 0;...


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

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

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