Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 16
1

Создать класс Triad (тройка чисел); определить метод сравнения триад. Определить производный класс Date

10.01.2019, 00:19. Просмотров 2244. Ответов 4
Метки нет (Все метки)

Создать класс Triad (тройка чисел); определить метод сравнения триад. Определить производный класс Date с полями: год, месяц и день. Определить полный набор методов сравнения дат.
Тема наследования, не могу ничего понять, прошу помочь с программой.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2019, 00:19
Ответы с готовыми решениями:

Создать класс Triad (тройка чисел) - определить методы; определить производный класс Date - переопределить методы
Создать класс Triad (тройка чисел); определить методы увеличения полей на 1. Определить производный...

Создать класс Triad (тройка чисел); определить методы изменения полей и вычисления суммы чисел.
Создать класс Triad (тройка чисел); определить методы изменения полей и вычисления суммы чисел....

Создать класс Triad (тройка чисел)
Создать класс Triad (тройка чисел); определить методы изменения полей и вычисления суммы чисел....

Создать абстрактный базовый класс Тройка чисел с виртуальными методами увеличения на 1. Создать производный класс Время со своими функциями
Здравствуйте, пожалуйста помогите написать код к данной задаче, с таким условием: Создать...

4
1456 / 922 / 807
Регистрация: 30.04.2016
Сообщений: 3,139
10.01.2019, 19:27 2
Цитата Сообщение от Fr0sT2013 Посмотреть сообщение
определить метод сравнения триад
Цитата Сообщение от Fr0sT2013 Посмотреть сообщение
Определить полный набор методов сравнения дат
Здравствуйте! Что вы имеете ввиду под методами сравнения? Проверку всех трех чисел на валидность (выход за пределы их диапазона)? И еще вопрос: cтоит ли делать класс Triad абстрактным?
0
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 16
18.01.2019, 18:28  [ТС] 3
Класс Triad должен быть абстрактным, Date - наследуемым. Проверять надо именно даты на валидность(учитывать високосный год и т.д.), а не числа в Триаде.
0
1456 / 922 / 807
Регистрация: 30.04.2016
Сообщений: 3,139
18.01.2019, 19:14 4
Fr0sT2013, здравствуйте. Можно ли для проверки дат использовать встроенные функции или регулярные выражения?
0
1456 / 922 / 807
Регистрация: 30.04.2016
Сообщений: 3,139
21.01.2019, 22:21 5
Fr0sT2013, здравствуйте! Вот тестовый вариант программы. Пишите, если у вас есть замечания. Я исправлю.

Код:

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
#include <iostream>
 
    using namespace std;
 
class Triad { //Базовый, абстрактный класс
 
    public:
 
        virtual bool isLeapYear(int y) = 0; //Виртуальная функция
 
    public:
 
        int day;
        int month;
        int year;
};
 
class Date: public Triad { //Производный класс
 
    public:
       
        Date() { //Конструктор по умолчанию
            day = 01;
            month = 01;
            year = 1970;
        }
 
    Date(int d, int m, int y) { //Инициализирующий конструктор (конструктор с параметром)
        day = d;
        month = m;
        year = y;
    }
 
    //Сеттеры
 
    void setDay(int d) {
        day = d;
    }
 
    void setMonth(int m) {
        month = m;
    }
 
    void setYear(int y) {
        year = y;
    }
 
    //Геттеры
 
    int getDay() {
        return day;
    }
 
    int getMonth() {
        return month;
    }
 
    int getYear() {
        return year;
    }
    
    //Остальные функции
    
    int days_in_month[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; //Массив дней для каждого месяца (год не високосный)
 
    bool isLeapYear(int year) { //Функция проверки является ли год високосным (реализуем виртуальный метод абстрактного класса)
        if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
            return true;
        }
        return false;
    }
 
    bool checkDay(Date &date) { //Функция проверки дня на валидность
        for (auto i: { 0, 2, 4, 6, 7, 9, 11 }) {
            if (date.getMonth() == i + 1) {
                if (date.getDay() >= 1 && date.getDay() <= days_in_month[i]) {
                    return true;
                }
            }
        }
        for (auto i: { 3, 5, 8, 10 }) {
            if (date.getMonth() == i + 1) {
                if (date.getDay() >= 1 && date.getDay() <= days_in_month[i]) {
                    return true;
                }
            }
        }
        if (date.getMonth() == 2) {
            if (isLeapYear(date.getYear())) {
                if (date.getDay() >= 1 && date.getDay() <= 29) {
                    return true;
                }
            } else {
                if (date.getDay() >= 1 && date.getDay() <= 28) {
                    return true;
                }
            }
        }
        return false;
    }
 
    bool checkMonth(Date &date) { //Функция проверки месяца на валидность
        if (date.getMonth() >= 1 && date.getMonth() <= 12) {
            return true;
        }
        return false;
    }
 
    bool checkYear(Date &date) { //Функция проверки года на валидность
        if (date.getYear() >= 1900 && date.getYear() <= 2040) {
            return true;
        }
        return false;
    }
 
    void checkDate(Date &date) { //Функция проверки даты на валидность
        if ((checkDay(date) == true) &&
            (checkMonth(date) == true) &&
            (checkYear(date) == true)) {
            cout << "This date is correct!\n";
        } else {
            cout << "This date is NOT correct!\n";
        }
    }
};
 
int main(void) {
    Date obj(31, 05, 2000); //Устанавливаем значение даты с помощью инициализирующего конструктора
    //obj.setDay(30);
    //obj.setMonth(04);
    //obj.setYear(2006);
    obj.checkDate(obj); //Проверяем дату на валидность
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2019, 22:21

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Создать класс Triad (тройка чисел). Выдает ошибку
задание звучит так: создать класс Triad (тройка чисел); определить методы изменения полей и...

Создать базовый класс Triad и производный класс vector3D
Помогите пожалуйста с заданием. Часть кода(vector3D) сделал, вроде работает Нужно помочь с классом...

Создать базовый класс Тройка_чисел (Triad) и производный класс Time с полями часы, минуты и секунды
Наследование. Виртуальныефункции.Полиморфизм. 1. Цельзадания: 1) Создание консольного приложения,...

Класс Triad (тройка чисел)
Создать класс Triad (тройка чисел); определить методы изменения полей и вычисления суммы чисел....


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

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

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