Filage

lab6

Nov 2nd, 2023
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <math.h>
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. int TakeNum(const int MIN, const int MAX) {
  9.     const string ERROR_CHOISE = "Проверьте корректность введнных данных!\n";
  10.     bool isIncorrect;
  11.     int num;
  12.     do {
  13.         isIncorrect = false;
  14.         cin >> num;
  15.         if (cin.fail()) {
  16.             isIncorrect = true;
  17.             cout << ERROR_CHOISE;
  18.             cin.clear();
  19.             while (cin.get() != '\n');
  20.         }
  21.         if (!isIncorrect && cin.get() != '\n') {
  22.             cin.clear();
  23.             while (cin.get() != '\n');
  24.             cout << ERROR_CHOISE;
  25.             isIncorrect = true;
  26.         }
  27.         if (!isIncorrect && (num < MIN || num > MAX)) {
  28.             isIncorrect = true;
  29.             cout << ERROR_CHOISE;
  30.         }
  31.     } while (isIncorrect);
  32.     return num;
  33. }
  34.  
  35. int rdn(int y, int m, int d) {
  36.     if (m < 3)
  37.         y--, m += 12;
  38.     return 365 * y + y / 4 - y / 100 + y / 400 + (153 * m - 457) / 5 + d - 306;
  39. }
  40.  
  41.  
  42. int main() {
  43.     setlocale(LC_ALL, "");
  44.     int year, A, B, C;
  45.     char f;
  46.     bool isIncorrect = false;
  47.  
  48.     cout << "Задание 1\n";
  49.  
  50.     cout << "Введите год\n";
  51.     year = TakeNum(1, 10000);
  52.     year = year % 12;
  53.  
  54.     switch (year) {
  55.     case 0: {
  56.         cout << "Это год Обезьяны\n";
  57.         break;
  58.     }
  59.  
  60.     case 1: {
  61.         cout << "Это год Петуха\n";
  62.         break;
  63.     }
  64.  
  65.     case 2: {
  66.         cout << "Это год Собаки\n";
  67.         break;
  68.     }
  69.  
  70.     case 3: {
  71.         cout << "Это год Свиньи\n";
  72.         break;
  73.     }
  74.  
  75.     case 4: {
  76.         cout << "Это год Мыши\n";
  77.         break;
  78.     }
  79.  
  80.     case 5: {
  81.         cout << "Это год Быка\n";
  82.         break;
  83.     }
  84.  
  85.     case 6: {
  86.         cout << "Это год Тигра\n";
  87.         break;
  88.     }
  89.  
  90.     case 7: {
  91.         cout << "Это год Кролика\n";
  92.         break;
  93.     }
  94.  
  95.     case 8: {
  96.         cout << "Это год Дракона\n";
  97.         break;
  98.     }
  99.  
  100.     case 9: {
  101.         cout << "Это год Змеи\n";
  102.         break;
  103.     }
  104.  
  105.     case 10: {
  106.         cout << "Это год Лошади\n";
  107.         break;
  108.     }
  109.  
  110.     case 11: {
  111.         cout << "Это год Козла\n";
  112.         break;
  113.     }
  114.     }
  115.     cout << "Задание 2\n";
  116.     cout << "Введите признак фигуры: к - круг, т - треугольник, п - прямоугольник\n";
  117.     do {
  118.         isIncorrect = false;
  119.         cin >> f;
  120.         if ((f != -86) && (f != -30) && (f != -81)) {
  121.             isIncorrect = true;
  122.             cout << "Ошибка ввода.\n";
  123.         }
  124.     } while (isIncorrect);
  125.     switch (f) {
  126.     case (-86): {
  127.         cout << "Введите радиус круга\n";
  128.         int R;
  129.         R = TakeNum(1, 1000);
  130.         cout << "Периметр длины круга равен: " << 2 * 3.14 * R << '\n';
  131.         cout << "Площать круга равна: " << 3.14 * R * R << '\n';
  132.         break;
  133.     }
  134.     case(-81): {
  135.         cout << "Введите стороны прямоугольника A и B\n";
  136.         A = TakeNum(1, 1000);
  137.         B = TakeNum(1, 1000);
  138.         cout << "Периметр прямоугольника равен: " << 2 * (A + B) << '\n';
  139.         cout << "Площадь прямоугольника равна: " << A * B << '\n';
  140.         break;
  141.     }
  142.     case(-30): {
  143.         cout << "Введите стороны треугольника A, B, C\n";
  144.         A = TakeNum(1, 1000);
  145.         B = TakeNum(1, 1000);
  146.         C = TakeNum(1, 1000);
  147.         cout << "Периметр треугольника равен: " << A + B + C << '\n';
  148.         int P = (A + B + C) / 2;
  149.         cout << "Площадь треугольника равна: " << P * (P - A) * (P - B) * (P - C) << '\n';
  150.         break;
  151.     }
  152.     }
  153.     cout << "Задание 3\n";
  154.     int count = 0, date, choice1, choice2, choice3, days, day_f, month_f, year_f, day_s, month_s, year_s;
  155.     double price = 0;
  156.  
  157.     do {
  158.         isIncorrect = false;
  159.         cout << "Дата покупки билета\n";
  160.         cout << "День: ";
  161.         day_f = TakeNum(1, 31);
  162.         cout << "Месяц: ";
  163.         month_f = TakeNum(1, 12);
  164.         cout << "Год: ";
  165.         year_f = TakeNum(2023, 2025);
  166.         cout << "Дата вылета\n";
  167.         cout << "День: ";
  168.         day_s = TakeNum(1, 31);
  169.         cout << "Месяц: ";
  170.         month_s = TakeNum(1, 12);
  171.         cout << "Год: ";
  172.         year_s = TakeNum(2023, 2025);
  173.         if (year_f > year_s || (year_f == year_s && month_f > month_s) || (year_f == year_s && month_f == month_s && day_f > day_s)) {
  174.             isIncorrect = true;
  175.             cout << "Дата вылета должна быть позже даты покупки билета\n";
  176.         }
  177.     } while (isIncorrect);
  178.     days = rdn(2024, 3, 23) - rdn(2023, 11, 1);
  179.     if (days > 40)
  180.         days = 1;
  181.     else if (days > 20)
  182.         days = 2;
  183.     else days = 0;
  184.  
  185.     string country[3] = { "Киев", "Москва", "Варшава" };
  186.     cout << "Выберите страну для рейса, где 0 - Киев, 1 - Москва, 2 - Варшава\n";
  187.     choice1 = TakeNum(0, 2);
  188.  
  189.     cout << "Выберите тип полета, где 1 - В одном направлении, 2 - В двух направлениях\n";
  190.     choice2 = TakeNum(1, 2);
  191.  
  192.     switch (choice1) {
  193.     case(0): {
  194.         price = 450;
  195.         switch (choice2) {
  196.         case(2): {
  197.             price = 750;
  198.             break;
  199.         }
  200.         }
  201.         break;
  202.     }
  203.  
  204.     case(1): {
  205.         price = 250;
  206.         switch (choice2) {
  207.         case(2): {
  208.             price = 400;
  209.             break;
  210.         }
  211.         }
  212.         break;
  213.     }
  214.  
  215.     case(2): {
  216.         price = 400;
  217.         switch (choice2) {
  218.         case(2): {
  219.             price = 650;
  220.             break;
  221.         }
  222.         }
  223.         break;
  224.     }
  225.     }
  226.  
  227.     switch (days) {
  228.     case(1):
  229.         price -= 0.2 * price;
  230.         break;
  231.     case(2):
  232.         price -= 0.1 * price;
  233.         break;
  234.     }
  235.     cout << "Итоговоая стоимость заказа составит: " << price << " руб.";
  236.     return 0;
  237. }
Advertisement
Add Comment
Please, Sign In to add comment