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

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

Восстановить пароль Регистрация
 
выручайте 23
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 30
08.12.2013, 13:59     Перегрузка операций и функций #1
Пожалуйста помогите. Выполнить перегрузку перечисленных операций
Дата в формате (день, месяц, год)
+ прибавление к дате указанного количества дней
- вычитание из даты указанного количества дней
% вычисление числа дней, прошедших между двумя датами
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2013, 13:59     Перегрузка операций и функций
Посмотрите здесь:

перегрузка операций и функций C++
C++ Перегрузка операций '<<' и '>>'
C++ ПЕРЕГРУЗКА ОПЕРАЦИЙ
Перегрузка операций C++
Перегрузка операций C++
Перегрузка операций C++
C++ Перегрузка операций
Перегрузка функций и операций C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
D3fend0r
17 / 17 / 1
Регистрация: 14.09.2013
Сообщений: 37
10.12.2013, 03:02     Перегрузка операций и функций #2
Вот код. Я добавил оператор вывода. В коде я использовал перевод даты в номер юлианского дня, и потом только операции сложения/вычитания. После переводим номер дня в дату григорианского календаря. Здесь можете прочитать об этом https://ru.wikipedia.org/wiki/%D0%AE...B0%D1%82%D0%B0
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
#include <iostream>
 
using namespace std;
 
 
 
class Date
{
    int day;
    int month;
    int year;
 
    static unsigned long From_Date_To_Days(Date d);
    static Date From_Days_To_Date(unsigned long n);
 
    friend Date operator+(Date d, int n);
    friend Date operator-(Date d, int n);
    friend int operator%(Date d1, Date d2);
    friend ostream& operator<<(ostream& os, Date d);
 
public:
    Date(int d, int m, int y);
 
};
 
/////////////////OPERATORS////////////////////////////////
 
Date operator+(Date d, int n);
Date operator-(Date d, int n);
int operator%(Date d1, Date d2);
ostream& operator<<(ostream& os, Date d);
///////////////////////////////////////////////////////////
 
 
 
int main()
{
    Date d1(9, 12, 2013);
    Date d2(29, 11, 2013);
    Date d3 = d1 + 10;
    Date d4 = d2 - 365*2;
    int i1 = d2%d1;
    cout << d1 << endl << d2 << endl << d3 << endl << d4 << endl << i1 << endl;
    system("pause");
}
 
 
////////////////////////////////////////////////
//////////////////DEFINITION////////////////////
////////////////////////////////////////////////
 
 
Date::Date(int d, int m, int y)
{
    this->day = d;
    this->month = m;
    this->year = y;
}
 
 
Date operator+(Date d, int n)
{
    return Date::From_Days_To_Date(Date::From_Date_To_Days(d) + n);
}
 
 
Date operator-(Date d, int n)
{
    return d+(-n);
}
 
 
int operator%(Date d1, Date d2)
{
    return Date::From_Date_To_Days(d2) - Date::From_Date_To_Days(d1);
}
 
 
ostream& operator<<(ostream& os, Date d)
{
    os << d.day << '.' << d.month << '.' << d.year;
    return os;
}
 
 
unsigned long Date::From_Date_To_Days(Date d)
{
    unsigned long a = (14 - d.month) / 12;
    unsigned long y = d.year + 4800 - a;
    unsigned long m = d.month + 12 * a - 3;
    return (d.day + (153 * m + 2) / 5 + 365 * y + y / 4 - y / 100 + y / 400 - 32045);
}
 
 
Date Date::From_Days_To_Date(unsigned long jdn)
{
    unsigned long a = jdn + 32044;
    unsigned long b=(4*a+3)/146097;
    unsigned long c = a - (146097 * b) / 4;
    unsigned long d = (4 * c + 3) / 1461;
    unsigned long e = c - (1461 * d) / 4;
    unsigned long m = (5 * e + 2) / 153;
    int day = e - (153 * m + 2) / 5 + 1;
    int month = m + 3 - 12 * (m / 10);
    int year = 100 * b + d - 4800 + (m / 10);
    return Date(day, month, year);
}
Yandex
Объявления
10.12.2013, 03:02     Перегрузка операций и функций
Ответ Создать тему
Опции темы

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