Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 22.02.2022
Сообщений: 40

Как создать Классы Date ?

14.03.2022, 17:47. Показов 1854. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
БУДУ ОЧЕНЬ БЛАГОДАРНА, а то преподаватель убьёт

Помогите пожалуйста создать создать класс Date для работы с датами в формате «день.месяц.год». Дата представляется структурой с тремя полями типа unsigned int: для года, месяца, дня. Класс должен включать не менее трех функций инициализации: числами, строкой вида «день.месяц.год» и датой. Обязательными операциями являются:
• вычисление даты через заданное количество дней;
• вычитание заданного количества дней из даты;
• определение високосности года;
• присвоение и получение отдельных частей (день, месяц, год);
• сравнение дат (равно, до, после);
• вычисление количества дней между датами.

Для демонстрации этих возможностей работы разработать меню.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.03.2022, 17:47
Ответы с готовыми решениями:

Создать классы Person и Date
Пожалуйста!!! Помогите!!! Нужно создать классы Person и Date для программы /она будет составляться в следующем задании/. Вот что...

Классы и наследование (Создать класс 3D фигура, и производные классы шар, конус, цилиндр и куб. Создать функцию вычисления объёма.)
Уважаевые, помогите написать прожку на экзамене: Создать класс 3D фигура, и производные классы шар, конус, цилиндр и куб. Создать функцию...

как создать классы с взаимными ссылками
Доброго времени суток. Есть класс с некоторым функционалом, и есть n классов которые должны с этим функционалом работать. Для этого...

7
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
14.03.2022, 19:33
Цитата Сообщение от Mashka156 Посмотреть сообщение
Для демонстрации этих возможностей работы разработать меню.
Если только сам класс ...
И немного позже.
Можете сразу писать пункт :

Цитата Сообщение от Mashka156 Посмотреть сообщение
• определение високосности года;
Цитата Сообщение от Mashka156 Посмотреть сообщение
• присвоение и получение отдельных частей (день, месяц, год);
Цитата Сообщение от Mashka156 Посмотреть сообщение
• сравнение дат (равно, до, после);
Цитата Сообщение от Mashka156 Посмотреть сообщение
• вычисление количества дней между датами.
На основе
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct Date{
    int day=1;
    int month=1;
    int year=1;
    // является ли год высокосным
    static bool is_leap_year(int y);
    // подсчет дней полных месяцев
    static int  days_by_monthes(int m, int y); // m -  месяц , y - год
    // подсчет высокосных годов от Нашей Эры до указанного года
    static int  leap_years(int year);
    // подсчет всех дней от Н.Э. до даты date
    static int  calc_days(const Date & date);
 
};
Напишете геттеры/сеттеры для полей, можно будет гордо написать class

Добавлено через 14 минут
Сами эти четыре функции реализовывать не нужно. они уже готовы.
Просто используйте их в своих методах.
0
0 / 0 / 0
Регистрация: 22.02.2022
Сообщений: 40
14.03.2022, 20:07  [ТС]
SmallEvil,
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
#include <iostream>
using namespace std;
 
class Date // имя класса
{
    /* список методов доступных другим функциям и объектам программы */
public: // спецификатор доступа public
    void set_date(unsigned int date_year, unsigned int date_month, unsigned int date_day); // установка даты в формате дд.мм.гг
    void get_date(); // отобразить текущую дату
    void leap_year(); //високосный год 
    void part_date(); //получение части даты 
    void change_date(unsigned int date_year, unsigned int date_month, unsigned int date_day); //изменить дату
    void date_calculator(); // калькулятор дат 
/* список свойств и методов для использования внутри класса */
private: // спецификатор доступа private
    unsigned int year, // год
                 month, // месяц
                 day; // день
 
 
}; // конец объявления класса Date
void Date::set_date(unsigned int date_year, unsigned int date_month, unsigned int date_day) // установка даты в формате дд.мм.гг
{
    year = date_year; // инициализация год
    month = date_month; // инициализация месяц
    day = date_day; // инициализация день
 
}
void Date::get_date() // отобразить текущую дату
{
    cout << "Дата: " << year << "." << month << "." << day << endl;
}
void Date::leap_year() // високосный год
{
    if (year % 4 == 0)
        cout << "Год високосный" << endl;
    else
        cout << "Год не является високосным" << endl;
}
void Date::part_date()
{
    int part;
    cout << "Какая часть даты нужна?" << endl;
    cout << "0 - выход" << endl;
    cout << "1 - год" << endl;
    cout << "2 - месяц" << endl;
    cout << "3 - день" << endl;
    cin >> part;
    switch (part)
    {
    case 0:
        break;
    case 1:
        cout << year << endl;
        break;
    case 2:
        cout << month << endl;
        break;
    case 3:
        cout << day << endl;
        break;
    }
}
void Date::change_date(unsigned int date_year, unsigned int date_month, unsigned int date_day) //изменить дату
{
    int new_part, new_year, new_month, new_day;
    cout << "Какую часть даты нужно изменить?" << endl;
    cout << "0 - выход" << endl;
    cout << "1 - год" << endl;
    cout << "2 - месяц" << endl;
    cout << "3 - день" << endl;
    cin >> new_part;
    switch (new_part)
    {
    case 0:
        break;
    case 1:
        cin >> new_year;
        year = new_year;
        break;
    case 2:
        cin >> new_month;
        month = new_month;
        break;
    case 3:
        cin >> new_day;
        day = new_day;
        break;
    }
    //cout << "Новая дата: " << date_year << "." << date_month << "." << date_day << endl;
    void set_date(unsigned int date_year, unsigned int date_month, unsigned int date_day); // установка даты в формате дд.мм.гг
    void get_date(); // отобразить текущую дату
}
 
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "rus"); // установка локали
    int day, month, year, day1, month1, year1, day2, month2, year2;
    cout << "Введите текущий год, месяц и день!\n";
    cout << "год: ";      cin >> year;
    cout << "месяц: ";    cin >> month;
    cout << "день: ";     cin >> day;
    Date objDate; // объявление объекта
    objDate.set_date(year, month, day); // инициализация даты
    objDate.get_date(); // отобразить дату
    objDate.leap_year(); //високосный год 
    objDate.part_date(); //получение части даты 
    objDate.change_date(year, month, day); //изменить дату
    objDate.get_date(); // отобразить дату
   
    cout << endl;
    system("pause");
    return 0;
}
У меня вот что получилось, но не могу сделать до конца можете помочь?
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
14.03.2022, 22:36
Mashka156, нууу, "Не то что бы совсем не попал" (С)Винни Пух

main.cpp :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include "Date.hpp"
 
using namespace std;
 
int main()
{
    const char* CDAY[]{
            "Пн", "Вт","Ср","Чт","Пт","Сб","Вс"
    };
    SE::Date data{14,3,2022};
    int day = (SE::Date::calc_days(data) - 1) % 7;
    data.print(cout);
    cout << endl;
    cout << "Прошло дней с Н.Э : " << (SE::Date::calc_days(data) - 1) << endl;
    data.assign(SE::Date::calc_days(data)).print(cout);
    cout << endl <<"День недели по введенной дате : ";
    cout << CDAY[day];
    return 0;
}
Date.hpp

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
/*
 Класс должен включать не менее трех функций инициализации:
    числами, строкой вида «день.месяц.год» и датой.
 Обязательными операциями являются:
    • вычисление даты через заданное количество дней;
    • вычитание заданного количества дней из даты;
    • определение високосности года;
    • присвоение и получение отдельных частей (день, месяц, год);
    • сравнение дат (равно, до, после);
    • вычисление количества дней между датами.
 */
 
#ifndef DATE_HPP_
#define DATE_HPP_
 
#include <iostream>
#include <exception>
#include <sstream>
#include <iomanip>
#include <string> // for Date::to_string() future
 
namespace SE{
const double DIY = 365.259641; // days in year
 
const int NLMonth[12]  = { 31, 28, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30 }; // 365
const int LMonth[12] =   { 31, 29, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30}; // 366
const int* Month[2]={NLMonth, LMonth};
 
const int NLMonthD[12]  = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }; // 365
const int LMonthD[12] =   { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 }; // 366
const int* MonthD[2]={NLMonthD, LMonthD};
 
struct Date{
    int day=1;
    int month=1;
    int year=1;
    // методы инициализации
    Date& assign(int days);
    Date& assign(int dd, int mm, int yy);
    Date& assign(const char* str);
    Date& assign(const Date& other);
 
    // сравнение возвратит разность дат в днях, 0 - даты равны, меньше нуля - дата до other
    // на же • вычисление количества дней между датами.
    int compare(const Date& other) const;
    std::ostream& print(std::ostream & out) const;
    // является ли год высокосным
    static bool is_leap_year(int y);
    // подсчет дней полных месяцев
    static int  days_by_monthes(int m, int y); // m -  месяц , y - год
    // подсчет высокосных годов от Нашей Эры до указанного года
    static int  leap_years(int year);
    // подсчет всех дней от Н.Э. до даты date
    static int  calc_days(const Date & date);
};
 
Date& Date::assign(int day){
    if (day<1)
        throw std::invalid_argument("assign");
    int dd{1}, mm{1}, ly{0}, yy{0};
    yy = day / DIY + 1;
    ly = leap_years(yy);
    dd = day - (ly * 366 + (yy - ly - 1)*365);
    bool leap = is_leap_year(yy);
    for (int i=0; i<12; ++i){
        if (dd < MonthD[leap][i])
            break;
        dd = dd - Month[leap][i];
        ++mm;
    }
    return this->assign(dd, mm, yy);
}
Date& Date::assign(int dd, int mm, int yy){
    if (yy > 0){
        if (mm>0 && mm<13){
            if (dd > 0 && dd <= Month[is_leap_year(yy)][mm-1]){
                day = dd;
                month = mm;
                year = yy;
                return *this;
            }
        }
    }
    throw std::invalid_argument("assign");
    return *this;
}
Date& Date::assign(const char* str){
    std::stringstream ss(str);
    int dd{0}, mm{0}, yy{0};
    ss>>dd;
    ss.clear(); ss.get();
    ss>>mm;
    ss.clear(); ss.get();
    ss>>yy;
    return this->assign(dd, mm, yy);
}
Date& Date::assign(const Date& other){
    day = other.day;
    month = other.month;
    year = other.year;
    return *this;
}
int Date::compare(const Date& other) const{
    return calc_days(*this) - calc_days(other);
}
std::ostream& Date::print(std::ostream & out) const{
    return out  << std::setw(2) << std::setfill('0') << day << '.'
                << std::setw(2) << std::setfill('0') << month << '.'
                << year;
}
bool Date::is_leap_year(int y)
{
    if ( y%400 == 0 ) return true;
    if ( y%100 == 0 ) return false;
    if ( y%4 == 0 )   return true;
    return false;
}
 
int Date::days_by_monthes(int m, int y) // m -  месяц , y - год
{
    if (m<1 || m>12)
        throw std::invalid_argument("days_by_monthes");
    int days = 0;
    bool leap = is_leap_year(y);
    days+=MonthD[leap][m-1];
    return days;
}
int Date::leap_years(int year)
{
    if (year<1)
        throw std::invalid_argument("leap_years");
    int years = year - 1;
    return (years / 4 - years / 100 + years / 400);
}
int Date::calc_days(const Date & date)
{
    int l_y = leap_years(date.year);
    int nl_y = date.year - 1 - l_y;
    return date.day + days_by_monthes(date.month, date.year) + l_y*366 + nl_y*365;
}
 
 
}
#endif /* DATE_HPP_ */


То что вошло в main - протестировано, остальное нужно еще проверять.
С другими пунктами у вас проблем быть не должно, используя уже готовые методы кода.

Если что то не работает, пишите.
Если какой пункт добавить совсем не получится, тоже пишите.
0
0 / 0 / 0
Регистрация: 22.02.2022
Сообщений: 40
17.03.2022, 20:50  [ТС]
SmallEvil, а это к какому пункту?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include "Date.hpp"
 
using namespace std;
 
int main()
{
    const char* CDAY[]{
            "Пн", "Вт","Ср","Чт","Пт","Сб","Вс"
    };
    SE::Date data{14,3,2022};
    int day = (SE::Date::calc_days(data) - 1) % 7;
    data.print(cout);
    cout << endl;
    cout << "Прошло дней с Н.Э : " << (SE::Date::calc_days(data) - 1) << endl;
    data.assign(SE::Date::calc_days(data)).print(cout);
    cout << endl <<"День недели по введенной дате : ";
    cout << CDAY[day];
    return 0;
}
Добавлено через 6 минут
SmallEvil, а в date выдаеёт ошибку clang++-7 -pthread -std=c++17 -o main main.cpp
/usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
exit status 1
 ^C
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
18.03.2022, 06:55
Цитата Сообщение от Mashka156 Посмотреть сообщение
а это к какому пункту?
Ни к какому, это тест.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
24.08.2023, 13:01
Лучший ответ Сообщение было отмечено SomniPhobia как решение

Решение

Было много багов, пофиксил сколько было сил на сегодня.
Кликните здесь для просмотра всего текста
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
/*
 Класс должен включать не менее трех функций инициализации:
    числами, строкой вида «день.месяц.год» и датой.
 Обязательными операциями являются:
    • вычисление даты через заданное количество дней;
    • вычитание заданного количества дней из даты;
    • определение високосности года;
    • присвоение и получение отдельных частей (день, месяц, год);
    • сравнение дат (равно, до, после);
    • вычисление количества дней между датами.
 */
 
#ifndef DATE_HPP_
#define DATE_HPP_
 
#include <iostream>
#include <exception>
#include <sstream>
#include <iomanip>
#include <string> // for Date::to_string() future
 
namespace SE{
const double DIY = 365.259641; // days in year
 
const int NLMonth[12]  = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 365
const int LMonth[12] =   { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 366
const int* Month[2]={NLMonth, LMonth};
 
const int NLMonthD[12]  = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }; // 365
const int LMonthD[12] =   { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 }; // 366
const int* MonthD[2]={NLMonthD, LMonthD};
 
struct Date{
    int day=1;
    int month=1;
    int year=1;
    // методы инициализации
    Date& assign(int days);
    Date& assign(int dd, int mm, int yy);
    Date& assign(const char* str);
    Date& assign(const Date& other);
 
    // сравнение возвратит разность дат в днях, 0 - даты равны, меньше нуля - дата до other
    // на же • вычисление количества дней между датами.
    int compare(const Date& other) const;
    std::ostream& print(std::ostream & out) const;
    // является ли год высокосным
    static bool is_leap_year(int y);
    // подсчет дней полных месяцев
    static int  days_by_monthes(int m, int y); // m -  месяц , y - год
    // подсчет высокосных годов от Нашей Эры до указанного года
    static int  leap_years(int year);
    // дата в днях (N-ый день от Н.Э. до даты date
    static int  calc_day(const Date & date);
};
 
Date& Date::assign(int day){
    if (day<1)
        throw std::invalid_argument("Date::assign(int day)");
    int dd{1}, mm{1}, ly{0}, yy{0};
    yy = day / DIY + 1;
    ly = leap_years(yy);
    bool leap = is_leap_year(yy);
    dd = (day - (ly * 366 + (yy - ly - 1)*365));
 
    for (int i=0; i<12; ++i){
        if (dd <= Month[leap][i])
            break;
        dd = dd - Month[leap][i];
        ++mm;
    }
    if (mm==13){
        mm = 1;
        ++yy;
    }
    leap = is_leap_year(yy);
    for (int i=0; i<12; ++i){
        if (dd <= Month[leap][i])
            break;
        dd = dd - Month[leap][i];
        ++mm;
    }
    return this->assign(dd, mm, yy);
}
Date& Date::assign(int dd, int mm, int yy){
    if (yy > 0){
        if (mm>0 && mm<13){
            // std::cerr << is_leap_year(yy) << ' ' << dd << ' ' << mm << ' ' << yy << std::endl;
            if (dd > 0 && dd <= Month[is_leap_year(yy)][mm-1]){
                day = dd;
                month = mm;
                year = yy;
                return *this;
            }
        }
    }
    throw std::invalid_argument("Date::assign(int dd, int mm, int yy)");
    return *this;
}
Date& Date::assign(const char* str){
    std::stringstream ss(str);
    int dd{0}, mm{0}, yy{0};
    ss>>dd;
    ss.clear(); ss.get();
    ss>>mm;
    ss.clear(); ss.get();
    ss>>yy;
    return this->assign(dd, mm, yy);
}
Date& Date::assign(const Date& other){
    day = other.day;
    month = other.month;
    year = other.year;
    return *this;
}
int Date::compare(const Date& other) const{
    return calc_day(*this) - calc_day(other);
}
std::ostream& Date::print(std::ostream & out) const{
    return out  << std::setw(2) << std::setfill('0') << day << '.'
                << std::setw(2) << std::setfill('0') << month << '.'
                << year;
}
bool Date::is_leap_year(int y)
{
    if ( y%400 == 0 ) return true;
    if ( y%100 == 0 ) return false;
    if ( y%4 == 0 )   return true;
    return false;
}
 
int Date::days_by_monthes(int m, int y) // m -  месяц , y - год
{
    if (m<1 || m>12)
        throw std::invalid_argument("days_by_monthes");
    int days = 0;
    bool leap = is_leap_year(y);
    days+=MonthD[leap][m-1];
    return days;
}
int Date::leap_years(int year)
{
    if (year<1)
        throw std::invalid_argument("leap_years");
    int years = year - 1;
    return (years / 4 - years / 100 + years / 400);
}
int Date::calc_day(const Date & date)
{
    int l_y = leap_years(date.year);
    int nl_y = date.year - 1 - l_y;
    return date.day + days_by_monthes(date.month, date.year) + l_y*366 + nl_y*365;
}
 
 
}
#endif /* DATE_HPP_ */


Добавлено через 39 минут
Всё равно багованый метод из дней в дату ... Date& assign(int days);
Нужно подумать.

Добавлено через 11 минут
Update : исправил (туго-худо) assign(int day);
Креш тест на генерацию дат от 1 до 740000-ого дня прошёл успешно.
2
184 / 72 / 35
Регистрация: 09.05.2022
Сообщений: 387
24.08.2023, 16:16
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
#include <iostream>
#include <string>
 
class Date {
private:
    unsigned int day;
    unsigned int month;
    unsigned int year;
 
    bool isLeapYear(unsigned int year) {
        return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
    }
 
public:
    Date(unsigned int d, unsigned int m, unsigned int y) : day(d), month(m), year(y) {}
 
    Date(std::string dateStr) {
        sscanf(dateStr.c_str(), "%d.%d.%d", &day, &month, &year);
    }
 
    void printDate() {
        std::cout << day << "." << month << "." << year << std::endl;
    }
 
    void addDays(int days) {
        day += days;
        while (day > daysInMonth(month, year)) {
            day -= daysInMonth(month, year);
            if (++month > 12) {
                month = 1;
                year++;
            }
        }
    }
 
    void subtractDays(int days) {
        day -= days;
        while (day <= 0) {
            if (--month == 0) {
                month = 12;
                year--;
            }
            day += daysInMonth(month, year);
        }
    }
 
    bool isBefore(Date other) {
        if (year < other.year || (year == other.year && month < other.month) ||
            (year == other.year && month == other.month && day < other.day)) {
            return true;
        }
        return false;
    }
 
    bool isAfter(Date other) {
        if (year > other.year || (year == other.year && month > other.month) ||
            (year == other.year && month == other.month && day > other.day)) {
            return true;
        }
        return false;
    }
 
    int daysBetween(Date other) {
        int days = 0;
        Date temp = *this;
 
        while (temp.isBefore(other)) {
            temp.addDays(1);
            days++;
        }
 
        while (temp.isAfter(other)) {
            temp.subtractDays(1);
            days--;
        }
 
        return days;
    }
 
    int daysInMonth(unsigned int m, unsigned int y) {
        static int daysPerMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        if (m == 2 && isLeapYear(y))
            return 29;
        return daysPerMonth[m];
    }
 
    unsigned int getDay() {
        return day;
    }
 
    unsigned int getMonth() {
        return month;
    }
 
    unsigned int getYear() {
        return year;
    }
 
    void setDay(unsigned int d) {
        day = d;
    }
 
    void setMonth(unsigned int m) {
        month = m;
    }
 
    void setYear(unsigned int y) {
        year = y;
    }
};
 
int main() {
    unsigned int day, month, year;
    std::string dateStr;
 
    std::cout << "Enter a date in format 'day.month.year': ";
    std::cin >> dateStr;
    Date date1(dateStr);
 
    std::cout << "Enter another date in format 'day.month.year': ";
    std::cin >> dateStr;
    Date date2(dateStr);
 
    std::cout << "Days between the two dates: " << date1.daysBetween(date2) << std::endl;
 
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.08.2023, 16:16
Помогаю со студенческими работами здесь

Создать класс Date
Товарищи программисты! Смиренно прошу о помощи, ибо не понимаю я си++ , а осталось пару дней до сдачи практических заданий. Кому не сложно...

Создать класс Date
Задача заключается в том что нужно создать класс Date. Поля класса год, месяц, день. Реализовать метод вычисления даты через заданное...

Создать класс с именем Date
Создайте класс Date, включающий в качестве элементов данных три информационных пункта: месяц (тип int), день (тип int) и год (тип int). Ваш...

Как создать динамический список используя классы?
доброго времени суток. препод попросил составить лабу ему чтоб был реализован динамический список, и использовались классы. нашел...

Создать классы ТРОЙКА_ЧИСЕЛ и DATE
Создайте консольное приложение. В нем создайте предложенные классы: Базовый класс: ТРОЙКА_ЧИСЕЛ (TRIAD) Первое_число (first) - int...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru