SHARE
TWEET

Untitled

a guest Dec 15th, 2019 75 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. struct date {
  9.     int day;
  10.     int month;
  11.     int year;
  12. };
  13.  
  14. bool vis(int y) {//високосный год
  15.     return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;
  16. }
  17.  
  18. int EndOfMonth(int m, int y) {//конец месяца
  19.     switch (m) {
  20.         case 1: case 3: case 5:
  21.         case 7: case 8: case 10: case 12: return 31;
  22.         case 4: case 6: case 9: case 11: return 30;
  23.         case 2: if (vis(y)) return 29;
  24.         else return 28;
  25.     }
  26. }
  27.  
  28. date STR_date(string str) {//перевод из строки в дату
  29.     date data;
  30.     //—–day———————-
  31.     string str1 = str.substr(0, 2);
  32.     const char* sd = str1.c_str();
  33.     int dd = atoi(sd);
  34.     data.day = dd;
  35.     //———month—————-
  36.     str1 = str.substr(3, 2);
  37.     sd = str1.c_str();
  38.     dd = atoi(sd);
  39.     data.month = dd;
  40.     //———year—————–
  41.     str1 = str.substr(6, 4);
  42.     sd = str1.c_str();
  43.     dd = atoi(sd);
  44.     data.year = dd;
  45.     return data;
  46. }
  47.  
  48. int correct(string str) {//проверка корректности данных
  49.     if (str.length() != 10) return -1;
  50.     for (string::size_type i = 0; i < str.length(); i++)
  51.         if (i != 2 && i != 5) {
  52.             if (!isdigit(str[i])) return -1;
  53.         }
  54.     date data = STR_date(str);
  55.     if (data.day <= 0 || data.day > EndOfMonth(data.month, data.year)) return -2;
  56.     if (data.month <= 0 || data.month > 12) return -3;
  57.     if (data.year == 0) return -4;
  58.     return 1;
  59. }
  60.  
  61. date Next(date x) {//следующий день
  62.     date y = x;
  63.     if (x.day < EndOfMonth(x.month, x.year)) y.day = x.day + 1;//не конец месяца
  64.     else if (x.month < 12) {//конец месяца, но не конец года
  65.         y.day = 1;
  66.         y.month = x.month + 1;
  67.     }
  68.     else {//31 декабря
  69.         y.day = 1;
  70.         y.month = 1;
  71.         y.year = x.year + 1;
  72.     }
  73.     return y;
  74. }
  75.  
  76. struct Hotel {
  77.     string FIO;
  78.     date date;
  79.     int days;
  80. };
  81.  
  82. int main()
  83. {
  84.     setlocale(LC_ALL, "ru");
  85.     cout << "Введите кол-во посетителей" << endl;
  86.     int n;
  87.     string g;
  88.     getline(cin, g);
  89.     n = stoi(g);
  90.     Hotel* h = new Hotel[n];
  91.     for (int i = 0; i < n; i++) {
  92.         string str;
  93.         cout << "введите ФИО" << endl;
  94.         getline(cin, str);
  95.         h[i].FIO = str;
  96.         cout << "введите дату заезда" << endl;
  97.  
  98.         getline(cin, str);
  99.         while (correct(str) != 1) {
  100.             cout << "дата заезда некорректная, введите еще раз" << endl;
  101.             getline(cin, str);
  102.         }
  103.         h[i].date = STR_date(str);
  104.         cout << "введите кол-во дней пребывания" << endl;
  105.         string l;
  106.         getline(cin, l);
  107.         h[i].days = stoi(l);
  108.     }
  109.     cout << "введите выбранную дату " << endl;
  110.     string d;
  111.     getline(cin, d);
  112.     while (correct(d) != 1) {
  113.         cout << " дата некорректная, введите снова " << endl;
  114.         getline(cin, d);
  115.     }
  116.     date data = STR_date(d);
  117.     for (int i = 0; i < n; i++) {
  118.         date temp = h[i].date;
  119.         int j = 0;
  120.        
  121.         while (j < h[i].days) {
  122.             if (temp.day == data.day && temp.month == data.month && temp.year == data.year) {
  123.                 cout << h[i].FIO << endl;
  124.                 break;
  125.             }
  126.             temp = Next(temp);
  127.         }
  128.        
  129.     }
  130.  
  131.  
  132.    
  133. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top