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

Перезагрузка операций - C++

Восстановить пароль Регистрация
 
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
09.03.2013, 16:07     Перезагрузка операций #1
Всем привет, есть такая задача.
Создать класс - дата с полями в закрытой части: день (1-31), месяц (1-12), год (целое число). Определить необходимые конструкторы, методы доступа, деструктор.
Перегрузить потоковые операции ввода и вывода, операции + (увеличение на n дней) - (разница между двумя датами), < и >=.

Вообщем не знаю как сделать это " Перегрузить потоковые операции ввода и вывода, операции + (увеличение на n дней) - (разница между двумя датами), < и >= " Помогите пожалуйста.

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
#include <iostream>
using namespace std;
 
class date
{
private:
    int day, month, year;
public:
    date(){};
    ~date(){};
 
    void change(void);
    void print(void);
    void SetDay(int a);
    void SetMonth(int b);
    void SetYear(int c);
 
   date operator +(date&);
   date operator -(date&);
   date operator <(date&);
   date operator >=(date&);
 
   friend istream& operator >>(istream&,date&);
   friend ostream& operator <<(ostream&,date&);
 
};
 
void date::SetDay(int a)
{
day=a;
}
 
void date::SetMonth(int b)
{
month=b;
}
 
void date::SetYear(int c)
{
year=c;
}
 
void date::change(void)
{
int a,b,c;
 
cout <<"Enter day"<<endl;
cin>>a;
SetDay(a);
 
cout <<"Enter month"<<endl;
cin>>b;
SetMonth(b);
 
cout <<"Enter year"<<endl;
cin>>c;
SetYear(c);
cout<<endl;
 
if((a < 0)|| (a > 31))
    {
        cout << "Error number of the day" << endl;
    }
 
if ((b<0) || (b>12)) 
    {
        cout <<"Error number of the month"<<endl;
    }
}
 
void date::print(void)
{
     if (day>31|| day<0 || month<0 || month>12) return;
    
     else
      {
         cout << day<<'.'<< month <<'.'<< year<<endl;
         cout<<endl;
      }
}
 
date date::operator +(date& y)
{
// код
}
 
date date::operator -(date& y)
{
// код
}
 
 
void main(void)
{   
    date obj;   
    obj.change();
    obj.print();
    getchar();
    getchar();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
09.03.2013, 17:26     Перезагрузка операций #2
Цитата Сообщение от ovner Посмотреть сообщение
C++
1
friend ostream& operator <<(ostream&,date&);
компилятор матюгнётся, выводимый объект надо передавать конст
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
09.03.2013, 22:33     Перезагрузка операций #3
C++
1
2
3
4
5
6
7
8
9
10
friend ostream& operator <<(ostream&,const date&);
 
ostream &operator<<(ostream &out,const date &Obj)
{
    out<<"Day: "<<Obj.day<<endl;
    out<<"Month: "<<Obj.month<<endl;
    out<<"Year"<<Obj.year<<endl;
 
    return out;
}
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
09.03.2013, 22:45     Перезагрузка операций #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ostream& operator <<(ostream& os, const date& dat)
{//вывод в формате YY.MM.DD
      os<<dat.year<<"."
         <<dat.month<<"."
         <<dat.day<<endl;
      return os;
}
 
istream& operator >>(istream& in, date& dat)
{ 
      in>>dat.year;
      in>>dat.month;
      in>>dat.day;
     
      return in;
}
Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
date date::operator -(date& y)
{
     date tmp;
     tmp.year = this->year - y.year;
     tmp.month = this->month - y.month;
     tmp.day = this->day - y.day;
 
     return tmp;
}
 
date date::operator +(date& y)
{
     date tmp;
     tmp.year = this->year + y.year;
     tmp.month = this->month + y.month;
     tmp.day = this->day + y.day;
 //нужно добавить проверку того что если складываются 
//допустим 20 - е числа, то день будет скажем 10 - ый, а месяц увеличится
//ну вы меня поняли  
     return tmp;
}
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
10.03.2013, 22:49  [ТС]     Перезагрузка операций #5
спасибо
а как это реализовать < и >=

Добавлено через 23 часа 3 минуты
апну
а как это реализовать < и >=
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.03.2013, 10:27     Перезагрузка операций #6
Цитата Сообщение от ovner Посмотреть сообщение
а как это реализовать < и >=
Так же:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
bool operator <(date&);
bool operator >=(date&);
 
bool date::operator<(date& y)
{
     if(year > y.year) return false;
     if(year < y.year) return true;
     if(month > month) return false;
     if(month < month) return true;
     if(day > day) return false;
     if(day < day) return true;
     return false;
}
 
bool date::operator>=(date& y)
{
     if (*this < y) return false;
     if(year  == y.year && 
        month == month  &&
        day   == day       ) return true;
    return true;
}
Yandex
Объявления
11.03.2013, 10:27     Перезагрузка операций
Ответ Создать тему
Опции темы

Текущее время: 13:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru