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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка функций с одинаковыми аргументами http://www.cyberforum.ru/cpp-beginners/thread1182434.html
Добрый день. Хотел спросить, можно ли создать две функции с одинаковыми именами, одинаковыми типами и их количеством, но разные имена. То есть int myfunc(int a); int myfunc(int b); У меня ругался что такая функция уже имеет текст реализации. Спасибо
C++ Упорядочить элементы динамического массива по возрастанию И снова здравствуйте. Еще одна проблема, я в этом плохо разбираюсь к сожалению, но надо сдать. Напишите, пожалуйста, программу, которая упорядочит элементы одномерного динамического массива по возрастанию. Размерность массива и его элементы задаются с клавиатуры. Однако, опять же следует помнить, что у нас в универе используют исключительно Borland C++ Builder 6 Enterprise Edition, а там, как... http://www.cyberforum.ru/cpp-beginners/thread1182420.html
C++ Вычисление максимального элемента в одномерном динамическом массиве
Здравствуйте, появилась такая проблема. Пожалуйста, напишите программу, которая высчитывает максимальный элемент в одномерном динамическом массиве. Размерность массива и его элементы задаются с клавиатуры. Однако, следует помнить, что у нас в универе используют исключительно Borland C++ Builder 6 Enterprise Edition, а там, как говориться, проблемы c современным написанием некоторых событий. На...
C++ Составьте пожалуйста блок-схему для данного кода
Составьте пожалуйста блок схему этой программы #include <iostream> using namespace std; /////////////////////////////////////////////////////////// class Distance // класс английских мер длины { private:
C++ Составление меню Switch Case http://www.cyberforum.ru/cpp-beginners/thread1182402.html
Саму оболочку сделал, а вот как сделать, чтобы после ввода 1 значения, можно было продолжить работу в программе (выбор 2 значения) - не понял. Что-то с return надо делать ? #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <iostream> using namespace std; int main() { setlocale(LC_CTYPE,"Russian"); cout<<"Информация об имени пользователя и компьютера - 1"<<endl;
C++ Площадь треугольников построенных на n точках Ребят, нужна помощь. дана такая задачка: Известны координаты n точек. Написать программу, которая вычисляет максимальную площадь треугольников, построенных на данных точках. Помогите, вообще не знаю как решать. подробнее

Показать сообщение отдельно
cj3687
2 / 2 / 0
Регистрация: 10.10.2013
Сообщений: 43

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

20.05.2014, 18:44. Просмотров 216. Ответов 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;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru