aLT22

Ann's_Lab_3_OOP (C++)

Mar 23rd, 2015
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.95 KB | None | 0 0
  1. /*
  2.     Создать класс Triad (тройка чисел) и определить методы увеличения полей на 1.
  3.     Определить производный класс Date с полями год, месяц и день.
  4.     Переопределить методы увеличения полей на 1 и определить метод увеличения даты на n дней
  5. */
  6. #include <iostream>
  7.  
  8. using namespace std;
  9.  
  10. // класс тройки чисел
  11. class Triad {
  12.     protected:
  13.         int X, Y, Z;
  14.     public:
  15.         Triad(int x, int y, int z) {
  16.             X = x;
  17.             Y = y;
  18.             Z = z;
  19.         }
  20.         Triad() {
  21.             X = 0;
  22.             Y = 0;
  23.             Z = 0;
  24.         }
  25.         int change_x() {
  26.             return ++X;
  27.         }
  28.         int change_y() {
  29.             return ++Y;
  30.         }
  31.         int change_z() {
  32.             return ++Z;
  33.         }
  34. };
  35.  
  36. // класс даты с переопределенными методами
  37. class Date : public Triad {
  38.     public:
  39.         Date(int x, int y, int z) {
  40.             X = x;
  41.             Y = y;
  42.             Z = z;
  43.         }
  44.         int change_x() {
  45.             return ++X;
  46.         }
  47.         int change_y() {
  48.             return ++Y;
  49.         }
  50.         int change_z() {
  51.             return ++Z;
  52.         }
  53.         int change_date(int n) {
  54.             return X += n;
  55.         }
  56.         void getDate() {
  57.             cout << X << '.' << Y << '.' << Z << endl;
  58.         }
  59.         void normalizeDate();
  60. };
  61.  
  62. void Date :: normalizeDate() {
  63.     if (X > 31 && (Y == 1 || Y == 3 || Y == 5 || Y == 7 || Y == 8 || Y == 10 || Y == 12)) {
  64.         Y++;
  65.         X = X - 31;
  66.         normalizeDate();
  67.     } else if (X > 30 && (Y == 4 || Y == 6 || Y == 9 || Y == 11)) {
  68.         Y++;
  69.         X = Y - 30;
  70.         normalizeDate();
  71.     } else if (Y == 2 && X > 28) {
  72.         Y++;
  73.         X = X - 28;
  74.         normalizeDate();
  75.     } else if (Y > 12) {
  76.         Z++;
  77.         Y = Y - 12;
  78.         normalizeDate();
  79.     }
  80. }
  81.  
  82. int main() {
  83.     setlocale(LC_ALL, "Russian");
  84.     cout << "Введите тройку чисел: ";
  85.     int x, y, z; cin >> x >> y >> z;
  86.     Triad triad(x, y, z);
  87.     Date date(x, y, z);
  88.     if (x <= 0 || y <= 0 || z <= 0) {
  89.         char choice_one;
  90.         cout << "Вы можете работать с этими числами только как с вектором!" << endl;
  91.         cout << "Выберите, что сделать с числами:\n     Увеличить на 1 единицу: (i - increase) "; cin >> choice_one;
  92.         if (choice_one == 'i') {
  93.             cout << "\nПолученная тройка чисел: " << triad.change_x() << ' ' << triad.change_y() << ' ' << triad.change_z() << endl;
  94.         }
  95.     } else {
  96.         char choice_two;
  97.         cout << "Выберите, как действовать с числами (d - как с датой, t - как с вектором): "; cin >> choice_two;
  98.         if (choice_two == 't') {
  99.             choice_two = NULL;
  100.             cout << "Выберите, что сделать с числами:\n     Увеличить на 1 единицу: (i - increase) "; cin >> choice_two;
  101.             if (choice_two == 'i') {
  102.                 cout << "\nПолученная тройка чисел: " << triad.change_x() << ' ' << triad.change_y() << ' ' << triad.change_z() << endl;
  103.             }
  104.         } else if (choice_two == 'd') {
  105.             char choice_three;
  106.             cout << "Выберите, что хотите сделать с датой (o - увеличить на 1 все, n - увеличить дату на n дней): "; cin >> choice_three;
  107.             if (choice_three == 'o') {
  108.                 date.change_x();
  109.                 date.change_y();
  110.                 date.change_z();
  111.                 date.normalizeDate();
  112.                 cout << "Результат: ";
  113.                 date.getDate();
  114.             } else if (choice_three == 'n') {
  115.                 int n = 0;
  116.                 cout << "Введите количество дней, на которое хотите увеличить текущую дату (по умолчанию 0) : "; cin >> n;
  117.                 date.change_date(n);
  118.                 date.normalizeDate();
  119.                 cout << "Полученная дата: ";
  120.                 date.getDate();
  121.             }
  122.         }
  123.     }
  124.     char choice_continue;
  125.     cout << "Введите то, что хотите сделать (\"C\" - продолжить работу) : ";
  126.     cin >> choice_continue;
  127.     if (choice_continue == 'c') {
  128.         main();
  129.     } else {
  130.         system("pause");
  131.         return 0;
  132.     }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment