Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.49 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include<fstream>
  4. #include <string>
  5. #include <ctime>
  6. #include <Windows.h>
  7. #include "conio.h"
  8. #include <time.h>
  9. using namespace std;
  10.  
  11. class DayAndTime
  12. {
  13. private: int tim[5];
  14. private: int hour = 9, hour1 = 12, hour2 = 15, hour3 = 18, hour4 = 23;
  15. public: void showCurrentDayTime()
  16. {
  17. time_t t;
  18. time(&t);
  19. tm *tme = localtime(&t);
  20. int index = 0;
  21. /*hour = rand() % 17 + 6;
  22. hour1 = rand() % 17 + 6;
  23. hour2 = rand() % 17 + 6;
  24. hour3 = rand() % 17 + 6;
  25. hour4 = rand() % 17 + 6;*/
  26.  
  27. cout << "Текущее время: ";
  28. cout << tme->tm_hour << ":" << tme->tm_min << endl;
  29.  
  30. while (tme->tm_hour)
  31. {
  32. if (tme->tm_hour < hour)
  33. {
  34. cout << 1 << " - " << hour << ":00\n";
  35. }
  36. if (tme->tm_hour < hour1)
  37. {
  38. cout << 2 << " - " << hour1 << ":00\n";
  39. }
  40. if (tme->tm_hour < hour2)
  41. {
  42. cout << 3 << " - " << hour2 << ":00\n";
  43. }
  44. if (tme->tm_hour < hour3)
  45. {
  46. cout << 4 << " - " << hour3 << ":00\n";
  47. }
  48. if (tme->tm_hour < hour4)
  49. {
  50. cout << 5 << " - " << hour4 << ":00\n";
  51. }
  52. else
  53. {
  54. cout << "Сеансов на сегодня нет\n";
  55. system("pause");
  56. }
  57.  
  58. break;
  59. };
  60. }
  61. public: void timeOfSession()
  62. {
  63. int index = 0;
  64. cout << "\nВремя: \n";
  65. for (int i = 0; i < 5; i++)
  66. {
  67. tim[i] = rand() % 17 + 6;
  68. }
  69. for (int i = 0; i < 5; i++)
  70. {
  71. for (int j = 0; j < 4; j++)
  72. {
  73. if (tim[j] > tim[j + 1])
  74. {
  75. int temp = tim[j];
  76. tim[j] = tim[j + 1];
  77. tim[j + 1] = temp;
  78. }
  79.  
  80. }
  81. }
  82.  
  83. for (int i = 0; i < 5; i++)
  84. {
  85. if (i % 2 == 0)
  86. cout << ++index << " - " << tim[i] << ":" << "30\n";
  87. else
  88. cout << ++index << " - " << tim[i] << ":" << "00\n";
  89. }
  90. }
  91. public: void times(int choice)
  92. {
  93.  
  94. switch (choice)
  95. {
  96. case 1:
  97. cout << "\nВремя: " << tim[0] << ":" << "30\n";
  98. break;
  99. case 2:
  100. cout << "\nВремя: " << tim[1] << ":" << "00\n";
  101. break;
  102. case 3:
  103. cout << "\nВремя: " << tim[2] << ":" << "00\n";
  104. break;
  105. case 4:
  106. cout << "\nВремя: " << tim[3] << ":" << "30\n";
  107. break;
  108. case 5:
  109. cout << "\nВремя: " << tim[4] << ":" << "00\n";
  110. break;
  111. }
  112.  
  113. }
  114. public: void choiceDays(int choice)
  115. {
  116. time_t t = time(NULL);
  117. tm* timePtr = localtime(&t);
  118.  
  119. switch (choice)
  120. {
  121. case 1:
  122. if ((timePtr->tm_mday) >= 10)
  123. {
  124. cout << "\nДата: " << timePtr->tm_mday;
  125.  
  126. if (timePtr->tm_mon + 1 >= 10)
  127. {
  128. cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  129.  
  130. }
  131. else
  132. {
  133. cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  134.  
  135. }
  136. }
  137. cout << '\n';
  138. break;
  139. case 2:
  140. if ((timePtr->tm_mday) >= 10)
  141. {
  142. cout << "\nДата: " << timePtr->tm_mday + 1;
  143.  
  144.  
  145. if (timePtr->tm_mon + 1 >= 10)
  146. {
  147. cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  148.  
  149. }
  150. else
  151. {
  152. cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  153.  
  154. }
  155. }
  156. break;
  157. case 3:
  158. if ((timePtr->tm_mday) >= 10)
  159. {
  160. cout << "\nДата: " << timePtr->tm_mday + 2;
  161.  
  162. if (timePtr->tm_mon + 1 >= 10)
  163. {
  164. cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  165.  
  166. }
  167. else
  168. {
  169. cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  170.  
  171. }
  172. }
  173. cout << '\n';
  174. break;
  175. case 4:
  176. if ((timePtr->tm_mday) >= 10)
  177. {
  178. cout << "\nДата: " << timePtr->tm_mday + 3;
  179.  
  180. if (timePtr->tm_mon + 1 >= 10)
  181. {
  182. cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  183.  
  184. }
  185. else
  186. {
  187. cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  188.  
  189. }
  190. }
  191. cout << '\n';
  192. break;
  193. case 5:
  194. if ((timePtr->tm_mday) >= 10)
  195. {
  196. cout << "\nДата: " << timePtr->tm_mday + 4;
  197.  
  198. if (timePtr->tm_mon + 1 >= 10)
  199. {
  200. cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  201.  
  202. }
  203. else
  204. {
  205. cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  206.  
  207. }
  208. }
  209. cout << '\n';
  210. break;
  211. case 6:
  212. if ((timePtr->tm_mday) >= 10)
  213. {
  214. cout << "\nДата: " << timePtr->tm_mday + 5;
  215.  
  216. if (timePtr->tm_mon + 1 >= 10)
  217. {
  218. cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  219.  
  220. }
  221. else
  222. {
  223. cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  224.  
  225. }
  226. }
  227. cout << '\n';
  228. break;
  229. case 7:
  230. if ((timePtr->tm_mday) >= 10)
  231. {
  232. cout << "\nДата: " << timePtr->tm_mday + 6;
  233.  
  234. if (timePtr->tm_mon + 1 >= 10)
  235. {
  236. cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  237.  
  238. }
  239. else
  240. {
  241. cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  242.  
  243. }
  244. }
  245. cout << "\n";
  246. break;
  247. }
  248. cout << "\n";
  249. }
  250. public: void timeOfCurrentDay(int choice)
  251. {
  252.  
  253. switch (choice)
  254. {
  255. case 1:
  256. cout << "Время: " << hour << ":00\n";
  257. break;
  258. case 2:
  259. cout << "Время: " << hour1 << ":00\n";
  260. break;
  261. case 3:
  262. cout << "Время: " << hour2 << ":00\n";
  263. break;
  264. case 4:
  265. cout << "Время: " << hour3 << ":00\n";
  266. break;
  267. case 5:
  268. cout << "Время: " << hour4 << ":00\n";
  269. }
  270. }
  271. };
  272.  
  273. class Red : DayAndTime
  274. {
  275. private: string seats[15][30];
  276.  
  277. private: void getColour(int text)
  278. {
  279. HANDLE str = GetStdHandle(STD_OUTPUT_HANDLE);
  280. SetConsoleTextAttribute(str, (WORD)((0 << 4) | text));
  281. }
  282.  
  283. private: bool availableSeat(int row, int column, string seatMap[15][30])
  284. {
  285. if ((row <= 15) && (column <= 30) && (seatMap[row][column] == "O"))
  286. {
  287. return true;
  288. }
  289. else
  290. {
  291. return false;
  292. }
  293. }
  294. public: void displayMovie()
  295. {
  296. cout << "#1 Мошенницы (16+) \n";
  297. cout << "#2 Ребенок темноты (16+) \n";
  298. cout << "#3 Брайтбьорн (16+) \n";
  299. cout << endl;
  300. }
  301. public: void chooceMovie(int choice)
  302. {
  303. switch (choice)
  304. {
  305. case 1:
  306. cout << "Мошенницы (16+) \n";
  307. break;
  308. case 2:
  309. cout << "Ребенок темноты (16+) \n";
  310. break;
  311. case 3:
  312. cout << "Брайтбьорн (16+) \n";
  313. break;
  314. }
  315. }
  316. private: void seatMap() {
  317.  
  318.  
  319. //ОТОБРАЖАЕТ КАРТУ С МЕСТАМИ
  320. int displayColumns = 0; //число, которое будет отображаться для столбца
  321. cout << endl << " ";
  322.  
  323. //отображает номера столбцов
  324. getColour(4);
  325. for (int column = 0; column < 30; column++) { //повторяется для каждого номера строки
  326.  
  327. if (displayColumns == 7 || displayColumns == 23) { //добавляет увеличенное пространство здесь
  328. cout << " ";
  329. }
  330.  
  331. displayColumns = displayColumns++; //начинается с добавления 1, потому что первый столбец 1, а не 0
  332.  
  333. //когда номер столбца больше 9, пробел между номерами столбцов должен быть меньше из-за увеличенного пространства, занимаемого 2 цифрами
  334. if (displayColumns > 9) {
  335. cout << " " << displayColumns;
  336. }
  337. else {
  338. cout << " " << displayColumns;
  339. }
  340. }
  341.  
  342. //отображает строки
  343.  
  344. for (int row = 0; row < 15; row++) {
  345. getColour(4);
  346. cout << endl << " Row " << row + 1 << " ";
  347.  
  348. if (row < 9) {
  349. cout << " "; //добавляется дополнительный пробел, если строка меньше 10, чтобы компенсировать отсутствие двух цифр
  350. }
  351. for (int column = 0; column < 30; column++) {
  352. if (column == 7 || column == 23) {
  353. cout << " "; //добавляет увеличенное пространство здесь
  354. }
  355. if (seats[row][column] == "X")getColour(13);
  356. if (seats[row][column] == "O")getColour(4);
  357. cout << seats[row][column] << " "; //повторяется в общей сложности (15 * 30) раз для каждого столбца в каждом ряду, отображая все сохраненные места (O или X)
  358.  
  359. }
  360. }
  361. getColour(15);
  362. }
  363. public: void display()
  364. {
  365. getColour(4);
  366. cout << "\n **************************************** КРАСНЫЙ ЗАЛ *****************************************\n";
  367. getColour(15);
  368.  
  369. for (int row = 0; row < 15; row++) {
  370. for (int column = 0; column < 30; column++) {
  371. int index = rand() % 2 + 0;
  372. if (index == 1)
  373. seats[row][column] = "X";
  374. else
  375. seats[row][column] = "O";
  376. }
  377. }
  378.  
  379. seatMap();
  380. }
  381. public: void place(int movie, int day)
  382. {
  383. char type;
  384. int time, choiceTime;
  385.  
  386. if (day == 1)
  387. {
  388. showCurrentDayTime();
  389. cout << "Выберите время: ";
  390. cin >> choiceTime;
  391. while (1)
  392. {
  393. if (cin.fail())
  394. {
  395. cin.clear();
  396. cin.ignore(132, '\n');
  397. cout << "Буквы вводить запрещенно!!! Попробуйте ещё раз: ";
  398. cin >> choiceTime;
  399. }
  400. if (choiceTime < 1 || choiceTime > 5)
  401. {
  402. cout << "Вы ввели неверное значение. Попробуйте ещё раз: ";
  403. cin >> choiceTime;
  404. }
  405. else
  406. break;
  407. }
  408. timeOfCurrentDay(choiceTime);
  409. }
  410. else
  411. {
  412. timeOfSession();
  413. cout << "Выберите время: ";
  414. cin >> time;
  415. while (1)
  416. {
  417. if (cin.fail())
  418. {
  419. cin.clear();
  420. cin.ignore(132, '\n');
  421. cout << "Буквы вводить запрещенно!!! Попробуйте ещё раз: ";
  422. cin >> time;
  423. }
  424. if (time < 1 || time > 5)
  425. {
  426. cout << "Вы ввели неверное значение. Попробуйте ещё раз: ";
  427. cin >> time;
  428. }
  429. else
  430. break;
  431. }
  432. times(time);
  433. }
  434. display();
  435. cout << "\n\nЦена:";
  436. cout << endl << " 100.00 грн.";
  437.  
  438.  
  439. int numbTickets, totalPrice = 0, buyingRow, buyingColumn;
  440. cout << endl << "Сколько билетов вы хотите купить? --> ";
  441. cin >> numbTickets; //пользовательский ввод количество билетов
  442. int *row = new int[numbTickets];
  443. int *coloums = new int[numbTickets];
  444. for (int x = 0; x < numbTickets; x++) { //повторяет количество покупаемых билетов
  445.  
  446. totalPrice = totalPrice + 100.00;
  447.  
  448. while (true) {
  449. //пользователь выбирает позицию своего места
  450. cout << "\n\nКупить билет(ы) на место:";
  451. cout << "\n Row --> ";
  452. cin >> buyingRow;
  453. row[x] = buyingRow;
  454. buyingRow = buyingRow - 1;
  455. cout << " Column --> ";
  456. cin >> buyingColumn;
  457. coloums[x] = buyingColumn;
  458. buyingColumn = buyingColumn - 1; //(1 вычитается, потому что то, что они считают строкой 1, на самом деле является строкой 0 для компьютера)
  459.  
  460. //если место доступно:
  461. if (availableSeat(buyingRow, buyingColumn, seats) == true) {
  462. seats[buyingRow][buyingColumn] = "X"; //место занято
  463. break; //выходит из цикла
  464. }
  465. else { //если место не доступно, пользователь должен повторить попытку
  466. cout << "\nИзвините, но эти места уже заняты. Пожалуйста, выберите другие доступные Вам места.";
  467. }
  468. }
  469. }
  470.  
  471. getColour(4);
  472. cout << "\n **************************************** КРАСНЫЙ ЗАЛ *****************************************\n";
  473. getColour(15);
  474. seatMap(); //отображает новую карту мест со всеми занятыми местами
  475.  
  476. cout << "\n\nВы купили " << numbTickets << " билет(а).";
  477. for (int i = 0; i < numbTickets; i++)
  478. {
  479.  
  480. choiceDays(day);
  481. cout << '\n';
  482. if (day == 1)
  483. timeOfCurrentDay(choiceTime);
  484. else
  485. times(time);
  486.  
  487. cout << "\nРяд: " << row[i] << " Столбец: " << coloums[i];
  488. cout << "\nФильм: ";
  489. chooceMovie(movie);
  490. }
  491. cout << "\nСтоимость Ваших билетов составляет: " << totalPrice << ".00 грн.\n\n"; //отображает общую стоимость
  492.  
  493. }
  494.  
  495. };
  496.  
  497. void date();
  498. void checkDate(int day);
  499. void checkMovie(int movie, int hall);
  500. int main()
  501. {
  502. setlocale(LC_ALL, "ru");
  503. srand(time(NULL));
  504.  
  505. Red red;
  506. DayAndTime dayAndTime;
  507. int movie, day;
  508.  
  509.  
  510. red.displayMovie();
  511. cout << "Выбирете фильм: ";
  512. cin >> movie;
  513. red.chooceMovie(movie);
  514. cout << '\n';
  515.  
  516. date();
  517. cout << "\nВыберите дату: ";
  518. cin >> day;
  519. checkDate(day);
  520. red.place(movie, day);
  521.  
  522.  
  523.  
  524. system("pause");
  525. return 0;
  526. }
  527. void date()
  528. {
  529. time_t t = time(NULL);
  530. tm* timePtr = localtime(&t);
  531. int counter = 0;
  532.  
  533. for (int i = 0; i < 7; i++)
  534. {
  535. if ((timePtr->tm_mday) >= 10)
  536. {
  537. cout << "\nДата: " << timePtr->tm_mday + i;
  538.  
  539. if (timePtr->tm_mon + 1 >= 10)
  540. {
  541. cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  542. cout << " - " << ++counter;
  543. }
  544. else
  545. {
  546. cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  547. cout << " - " << ++counter;
  548. }
  549. }
  550. else
  551. {
  552. cout << "\nДата: " << " 0" << timePtr->tm_mday + i;
  553.  
  554. if (timePtr->tm_mon + 1 >= 10)
  555. {
  556. cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  557. cout << " - " << ++counter;
  558. }
  559. else
  560. {
  561. cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
  562. cout << " - " << ++counter;
  563. }
  564. }
  565. }
  566. }
  567. void checkDate(int day)
  568. {
  569. DayAndTime dayAndTime;
  570. while (1)
  571. {
  572. if (cin.fail())
  573. {
  574. cin.clear();
  575. cin.ignore(132, '\n');
  576. cout << "Буквы вводить запрещенно!!! Попробуйте ещё раз: ";
  577. cin >> day;
  578. }
  579. if (day < 1 || day > 7)
  580. {
  581. cout << "Вы ввели неверное значение. Попробуйте ещё раз: ";
  582. cin >> day;
  583. }
  584. else
  585. {
  586. dayAndTime.choiceDays(day);
  587. break;
  588. }
  589. }
  590. }
  591. void checkMovie(int movie, int hall)
  592. {
  593. while (1)
  594. {
  595. if (cin.fail())
  596. {
  597. cin.clear();
  598. cin.ignore(132, '\n');
  599. cout << "Буквы вводить запрещенно!!! Попробуйте ещё раз: ";
  600. cin >> movie;
  601. }
  602. if (movie < 1 || movie > 3)
  603. {
  604. cout << "Вы ввели неверное значение. Попробуйте ещё раз: ";
  605. cin >> movie;
  606. }
  607. else
  608. if (hall == 1)
  609. {
  610. Red red;
  611. red.chooceMovie(movie);
  612. }
  613. else if (hall == 2)
  614. {
  615. //Green green;
  616. //green.chooceMovie(movie);
  617. }
  618. else if (hall == 3)
  619. {
  620. //Yellow yellow;
  621. //yellow.choiceMovie(movie);
  622. }
  623. break;
  624. }
  625. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement