Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include<fstream>
- #include <string>
- #include <ctime>
- #include <Windows.h>
- #include "conio.h"
- #include <time.h>
- using namespace std;
- class DayAndTime
- {
- private: int tim[5];
- private: int hour = 9, hour1 = 12, hour2 = 15, hour3 = 18, hour4 = 23;
- public: void showCurrentDayTime()
- {
- time_t t;
- time(&t);
- tm *tme = localtime(&t);
- int index = 0;
- /*hour = rand() % 17 + 6;
- hour1 = rand() % 17 + 6;
- hour2 = rand() % 17 + 6;
- hour3 = rand() % 17 + 6;
- hour4 = rand() % 17 + 6;*/
- cout << "Текущее время: ";
- cout << tme->tm_hour << ":" << tme->tm_min << endl;
- while (tme->tm_hour)
- {
- if (tme->tm_hour < hour)
- {
- cout << 1 << " - " << hour << ":00\n";
- }
- if (tme->tm_hour < hour1)
- {
- cout << 2 << " - " << hour1 << ":00\n";
- }
- if (tme->tm_hour < hour2)
- {
- cout << 3 << " - " << hour2 << ":00\n";
- }
- if (tme->tm_hour < hour3)
- {
- cout << 4 << " - " << hour3 << ":00\n";
- }
- if (tme->tm_hour < hour4)
- {
- cout << 5 << " - " << hour4 << ":00\n";
- }
- else
- {
- cout << "Сеансов на сегодня нет\n";
- system("pause");
- }
- break;
- };
- }
- public: void timeOfSession()
- {
- int index = 0;
- cout << "\nВремя: \n";
- for (int i = 0; i < 5; i++)
- {
- tim[i] = rand() % 17 + 6;
- }
- for (int i = 0; i < 5; i++)
- {
- for (int j = 0; j < 4; j++)
- {
- if (tim[j] > tim[j + 1])
- {
- int temp = tim[j];
- tim[j] = tim[j + 1];
- tim[j + 1] = temp;
- }
- }
- }
- for (int i = 0; i < 5; i++)
- {
- if (i % 2 == 0)
- cout << ++index << " - " << tim[i] << ":" << "30\n";
- else
- cout << ++index << " - " << tim[i] << ":" << "00\n";
- }
- }
- public: void times(int choice)
- {
- switch (choice)
- {
- case 1:
- cout << "\nВремя: " << tim[0] << ":" << "30\n";
- break;
- case 2:
- cout << "\nВремя: " << tim[1] << ":" << "00\n";
- break;
- case 3:
- cout << "\nВремя: " << tim[2] << ":" << "00\n";
- break;
- case 4:
- cout << "\nВремя: " << tim[3] << ":" << "30\n";
- break;
- case 5:
- cout << "\nВремя: " << tim[4] << ":" << "00\n";
- break;
- }
- }
- public: void choiceDays(int choice)
- {
- time_t t = time(NULL);
- tm* timePtr = localtime(&t);
- switch (choice)
- {
- case 1:
- if ((timePtr->tm_mday) >= 10)
- {
- cout << "\nДата: " << timePtr->tm_mday;
- if (timePtr->tm_mon + 1 >= 10)
- {
- cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- }
- else
- {
- cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- }
- }
- cout << '\n';
- break;
- case 2:
- if ((timePtr->tm_mday) >= 10)
- {
- cout << "\nДата: " << timePtr->tm_mday + 1;
- if (timePtr->tm_mon + 1 >= 10)
- {
- cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- }
- else
- {
- cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- }
- }
- break;
- case 3:
- if ((timePtr->tm_mday) >= 10)
- {
- cout << "\nДата: " << timePtr->tm_mday + 2;
- if (timePtr->tm_mon + 1 >= 10)
- {
- cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- }
- else
- {
- cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- }
- }
- cout << '\n';
- break;
- case 4:
- if ((timePtr->tm_mday) >= 10)
- {
- cout << "\nДата: " << timePtr->tm_mday + 3;
- if (timePtr->tm_mon + 1 >= 10)
- {
- cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- }
- else
- {
- cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- }
- }
- cout << '\n';
- break;
- case 5:
- if ((timePtr->tm_mday) >= 10)
- {
- cout << "\nДата: " << timePtr->tm_mday + 4;
- if (timePtr->tm_mon + 1 >= 10)
- {
- cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- }
- else
- {
- cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- }
- }
- cout << '\n';
- break;
- case 6:
- if ((timePtr->tm_mday) >= 10)
- {
- cout << "\nДата: " << timePtr->tm_mday + 5;
- if (timePtr->tm_mon + 1 >= 10)
- {
- cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- }
- else
- {
- cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- }
- }
- cout << '\n';
- break;
- case 7:
- if ((timePtr->tm_mday) >= 10)
- {
- cout << "\nДата: " << timePtr->tm_mday + 6;
- if (timePtr->tm_mon + 1 >= 10)
- {
- cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- }
- else
- {
- cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- }
- }
- cout << "\n";
- break;
- }
- cout << "\n";
- }
- public: void timeOfCurrentDay(int choice)
- {
- switch (choice)
- {
- case 1:
- cout << "Время: " << hour << ":00\n";
- break;
- case 2:
- cout << "Время: " << hour1 << ":00\n";
- break;
- case 3:
- cout << "Время: " << hour2 << ":00\n";
- break;
- case 4:
- cout << "Время: " << hour3 << ":00\n";
- break;
- case 5:
- cout << "Время: " << hour4 << ":00\n";
- }
- }
- };
- class Red : DayAndTime
- {
- private: string seats[15][30];
- private: void getColour(int text)
- {
- HANDLE str = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleTextAttribute(str, (WORD)((0 << 4) | text));
- }
- private: bool availableSeat(int row, int column, string seatMap[15][30])
- {
- if ((row <= 15) && (column <= 30) && (seatMap[row][column] == "O"))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- public: void displayMovie()
- {
- cout << "#1 Мошенницы (16+) \n";
- cout << "#2 Ребенок темноты (16+) \n";
- cout << "#3 Брайтбьорн (16+) \n";
- cout << endl;
- }
- public: void chooceMovie(int choice)
- {
- switch (choice)
- {
- case 1:
- cout << "Мошенницы (16+) \n";
- break;
- case 2:
- cout << "Ребенок темноты (16+) \n";
- break;
- case 3:
- cout << "Брайтбьорн (16+) \n";
- break;
- }
- }
- private: void seatMap() {
- //ОТОБРАЖАЕТ КАРТУ С МЕСТАМИ
- int displayColumns = 0; //число, которое будет отображаться для столбца
- cout << endl << " ";
- //отображает номера столбцов
- getColour(4);
- for (int column = 0; column < 30; column++) { //повторяется для каждого номера строки
- if (displayColumns == 7 || displayColumns == 23) { //добавляет увеличенное пространство здесь
- cout << " ";
- }
- displayColumns = displayColumns++; //начинается с добавления 1, потому что первый столбец 1, а не 0
- //когда номер столбца больше 9, пробел между номерами столбцов должен быть меньше из-за увеличенного пространства, занимаемого 2 цифрами
- if (displayColumns > 9) {
- cout << " " << displayColumns;
- }
- else {
- cout << " " << displayColumns;
- }
- }
- //отображает строки
- for (int row = 0; row < 15; row++) {
- getColour(4);
- cout << endl << " Row " << row + 1 << " ";
- if (row < 9) {
- cout << " "; //добавляется дополнительный пробел, если строка меньше 10, чтобы компенсировать отсутствие двух цифр
- }
- for (int column = 0; column < 30; column++) {
- if (column == 7 || column == 23) {
- cout << " "; //добавляет увеличенное пространство здесь
- }
- if (seats[row][column] == "X")getColour(13);
- if (seats[row][column] == "O")getColour(4);
- cout << seats[row][column] << " "; //повторяется в общей сложности (15 * 30) раз для каждого столбца в каждом ряду, отображая все сохраненные места (O или X)
- }
- }
- getColour(15);
- }
- public: void display()
- {
- getColour(4);
- cout << "\n **************************************** КРАСНЫЙ ЗАЛ *****************************************\n";
- getColour(15);
- for (int row = 0; row < 15; row++) {
- for (int column = 0; column < 30; column++) {
- int index = rand() % 2 + 0;
- if (index == 1)
- seats[row][column] = "X";
- else
- seats[row][column] = "O";
- }
- }
- seatMap();
- }
- public: void place(int movie, int day)
- {
- char type;
- int time, choiceTime;
- if (day == 1)
- {
- showCurrentDayTime();
- cout << "Выберите время: ";
- cin >> choiceTime;
- while (1)
- {
- if (cin.fail())
- {
- cin.clear();
- cin.ignore(132, '\n');
- cout << "Буквы вводить запрещенно!!! Попробуйте ещё раз: ";
- cin >> choiceTime;
- }
- if (choiceTime < 1 || choiceTime > 5)
- {
- cout << "Вы ввели неверное значение. Попробуйте ещё раз: ";
- cin >> choiceTime;
- }
- else
- break;
- }
- timeOfCurrentDay(choiceTime);
- }
- else
- {
- timeOfSession();
- cout << "Выберите время: ";
- cin >> time;
- while (1)
- {
- if (cin.fail())
- {
- cin.clear();
- cin.ignore(132, '\n');
- cout << "Буквы вводить запрещенно!!! Попробуйте ещё раз: ";
- cin >> time;
- }
- if (time < 1 || time > 5)
- {
- cout << "Вы ввели неверное значение. Попробуйте ещё раз: ";
- cin >> time;
- }
- else
- break;
- }
- times(time);
- }
- display();
- cout << "\n\nЦена:";
- cout << endl << " 100.00 грн.";
- int numbTickets, totalPrice = 0, buyingRow, buyingColumn;
- cout << endl << "Сколько билетов вы хотите купить? --> ";
- cin >> numbTickets; //пользовательский ввод количество билетов
- int *row = new int[numbTickets];
- int *coloums = new int[numbTickets];
- for (int x = 0; x < numbTickets; x++) { //повторяет количество покупаемых билетов
- totalPrice = totalPrice + 100.00;
- while (true) {
- //пользователь выбирает позицию своего места
- cout << "\n\nКупить билет(ы) на место:";
- cout << "\n Row --> ";
- cin >> buyingRow;
- row[x] = buyingRow;
- buyingRow = buyingRow - 1;
- cout << " Column --> ";
- cin >> buyingColumn;
- coloums[x] = buyingColumn;
- buyingColumn = buyingColumn - 1; //(1 вычитается, потому что то, что они считают строкой 1, на самом деле является строкой 0 для компьютера)
- //если место доступно:
- if (availableSeat(buyingRow, buyingColumn, seats) == true) {
- seats[buyingRow][buyingColumn] = "X"; //место занято
- break; //выходит из цикла
- }
- else { //если место не доступно, пользователь должен повторить попытку
- cout << "\nИзвините, но эти места уже заняты. Пожалуйста, выберите другие доступные Вам места.";
- }
- }
- }
- getColour(4);
- cout << "\n **************************************** КРАСНЫЙ ЗАЛ *****************************************\n";
- getColour(15);
- seatMap(); //отображает новую карту мест со всеми занятыми местами
- cout << "\n\nВы купили " << numbTickets << " билет(а).";
- for (int i = 0; i < numbTickets; i++)
- {
- choiceDays(day);
- cout << '\n';
- if (day == 1)
- timeOfCurrentDay(choiceTime);
- else
- times(time);
- cout << "\nРяд: " << row[i] << " Столбец: " << coloums[i];
- cout << "\nФильм: ";
- chooceMovie(movie);
- }
- cout << "\nСтоимость Ваших билетов составляет: " << totalPrice << ".00 грн.\n\n"; //отображает общую стоимость
- }
- };
- void date();
- void checkDate(int day);
- void checkMovie(int movie, int hall);
- int main()
- {
- setlocale(LC_ALL, "ru");
- srand(time(NULL));
- Red red;
- DayAndTime dayAndTime;
- int movie, day;
- red.displayMovie();
- cout << "Выбирете фильм: ";
- cin >> movie;
- red.chooceMovie(movie);
- cout << '\n';
- date();
- cout << "\nВыберите дату: ";
- cin >> day;
- checkDate(day);
- red.place(movie, day);
- system("pause");
- return 0;
- }
- void date()
- {
- time_t t = time(NULL);
- tm* timePtr = localtime(&t);
- int counter = 0;
- for (int i = 0; i < 7; i++)
- {
- if ((timePtr->tm_mday) >= 10)
- {
- cout << "\nДата: " << timePtr->tm_mday + i;
- if (timePtr->tm_mon + 1 >= 10)
- {
- cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- cout << " - " << ++counter;
- }
- else
- {
- cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- cout << " - " << ++counter;
- }
- }
- else
- {
- cout << "\nДата: " << " 0" << timePtr->tm_mday + i;
- if (timePtr->tm_mon + 1 >= 10)
- {
- cout << '.' << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- cout << " - " << ++counter;
- }
- else
- {
- cout << ".0" << timePtr->tm_mon + 1 << '.' << timePtr->tm_year + 1900;
- cout << " - " << ++counter;
- }
- }
- }
- }
- void checkDate(int day)
- {
- DayAndTime dayAndTime;
- while (1)
- {
- if (cin.fail())
- {
- cin.clear();
- cin.ignore(132, '\n');
- cout << "Буквы вводить запрещенно!!! Попробуйте ещё раз: ";
- cin >> day;
- }
- if (day < 1 || day > 7)
- {
- cout << "Вы ввели неверное значение. Попробуйте ещё раз: ";
- cin >> day;
- }
- else
- {
- dayAndTime.choiceDays(day);
- break;
- }
- }
- }
- void checkMovie(int movie, int hall)
- {
- while (1)
- {
- if (cin.fail())
- {
- cin.clear();
- cin.ignore(132, '\n');
- cout << "Буквы вводить запрещенно!!! Попробуйте ещё раз: ";
- cin >> movie;
- }
- if (movie < 1 || movie > 3)
- {
- cout << "Вы ввели неверное значение. Попробуйте ещё раз: ";
- cin >> movie;
- }
- else
- if (hall == 1)
- {
- Red red;
- red.chooceMovie(movie);
- }
- else if (hall == 2)
- {
- //Green green;
- //green.chooceMovie(movie);
- }
- else if (hall == 3)
- {
- //Yellow yellow;
- //yellow.choiceMovie(movie);
- }
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement