Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Создать класс Triad (тройка чисел) и определить методы увеличения полей на 1.
- Определить производный класс Date с полями год, месяц и день.
- Переопределить методы увеличения полей на 1 и определить метод увеличения даты на n дней
- */
- #include <iostream>
- using namespace std;
- // класс тройки чисел
- class Triad {
- protected:
- int X, Y, Z;
- public:
- Triad(int x, int y, int z) {
- X = x;
- Y = y;
- Z = z;
- }
- Triad() {
- X = 0;
- Y = 0;
- Z = 0;
- }
- int change_x() {
- return ++X;
- }
- int change_y() {
- return ++Y;
- }
- int change_z() {
- return ++Z;
- }
- };
- // класс даты с переопределенными методами
- class Date : public Triad {
- public:
- Date(int x, int y, int z) {
- X = x;
- Y = y;
- Z = z;
- }
- int change_x() {
- return ++X;
- }
- int change_y() {
- return ++Y;
- }
- int change_z() {
- return ++Z;
- }
- int change_date(int n) {
- return X += n;
- }
- void getDate() {
- cout << X << '.' << Y << '.' << Z << endl;
- }
- void normalizeDate();
- };
- void Date :: normalizeDate() {
- if (X > 31 && (Y == 1 || Y == 3 || Y == 5 || Y == 7 || Y == 8 || Y == 10 || Y == 12)) {
- Y++;
- X = X - 31;
- normalizeDate();
- } else if (X > 30 && (Y == 4 || Y == 6 || Y == 9 || Y == 11)) {
- Y++;
- X = Y - 30;
- normalizeDate();
- } else if (Y == 2 && X > 28) {
- Y++;
- X = X - 28;
- normalizeDate();
- } else if (Y > 12) {
- Z++;
- Y = Y - 12;
- normalizeDate();
- }
- }
- int main() {
- setlocale(LC_ALL, "Russian");
- cout << "Введите тройку чисел: ";
- int x, y, z; cin >> x >> y >> z;
- Triad triad(x, y, z);
- Date date(x, y, z);
- if (x <= 0 || y <= 0 || z <= 0) {
- char choice_one;
- cout << "Вы можете работать с этими числами только как с вектором!" << endl;
- cout << "Выберите, что сделать с числами:\n Увеличить на 1 единицу: (i - increase) "; cin >> choice_one;
- if (choice_one == 'i') {
- cout << "\nПолученная тройка чисел: " << triad.change_x() << ' ' << triad.change_y() << ' ' << triad.change_z() << endl;
- }
- } else {
- char choice_two;
- cout << "Выберите, как действовать с числами (d - как с датой, t - как с вектором): "; cin >> choice_two;
- if (choice_two == 't') {
- choice_two = NULL;
- cout << "Выберите, что сделать с числами:\n Увеличить на 1 единицу: (i - increase) "; cin >> choice_two;
- if (choice_two == 'i') {
- cout << "\nПолученная тройка чисел: " << triad.change_x() << ' ' << triad.change_y() << ' ' << triad.change_z() << endl;
- }
- } else if (choice_two == 'd') {
- char choice_three;
- cout << "Выберите, что хотите сделать с датой (o - увеличить на 1 все, n - увеличить дату на n дней): "; cin >> choice_three;
- if (choice_three == 'o') {
- date.change_x();
- date.change_y();
- date.change_z();
- date.normalizeDate();
- cout << "Результат: ";
- date.getDate();
- } else if (choice_three == 'n') {
- int n = 0;
- cout << "Введите количество дней, на которое хотите увеличить текущую дату (по умолчанию 0) : "; cin >> n;
- date.change_date(n);
- date.normalizeDate();
- cout << "Полученная дата: ";
- date.getDate();
- }
- }
- }
- char choice_continue;
- cout << "Введите то, что хотите сделать (\"C\" - продолжить работу) : ";
- cin >> choice_continue;
- if (choice_continue == 'c') {
- main();
- } else {
- system("pause");
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment