Главная » 2017 » Сентябрь » 25 » Разбор задания по структурам №2
11:18
Разбор задания по структурам №2

На вход про­грам­ме по­да­ют­ся све­де­ния о посетителях, же­ла­ю­щих по­пасть в по­пу­ляр­ное кафе. В пер­вой стро­ке со­об­ща­ет­ся число же­ла­ю­щих N, ко­то­рое не мень­ше 10, но не пре­вос­хо­дит 1000, и ко­ли­че­ство столиков, ко­то­рое не мень­ше 10, но не пре­вос­хо­дит 1000. Каж­дая из сле­ду­ю­щих N строк имеет сле­ду­ю­щий формат:

 

<Фамилия> <время прихода> < время ухода>,

 

где <Фамилия> — строка, со­сто­я­щая не более чем из 20 символов; <время прихода> — через двое­то­чие два целых числа, со­от­вет­ству­ю­щие часам (от 00 до 23 — ровно 2 символа) и ми­ну­там (от 00 до 59 — ровно 2 символа); <время ухода> имеет тот же формат. <Фамилия> и <время прихода>, а также <время прихода> и <время ухода> раз­де­ле­ны одним пробелом.

Сведения от­сор­ти­ро­ва­ны в по­ряд­ке вре­ме­ни прихода. Каж­до­му сле­ду­ю­ще­му по­се­ти­те­лю вы­де­ля­ет­ся сво­бод­ный сто­лик с ми­ни­маль­ным номером. Если в мо­мент при­хо­да сво­бод­ных сто­ли­ков нет, то по­се­ти­тель уходит, не до­жи­да­ясь осво­бож­де­ния од­но­го из них.

Требуется на­пи­сать эф­фек­тив­ную программу, ко­то­рая будет вы­во­дить на экран для каж­до­го по­се­ти­те­ля номер столика, ко­то­рый ему будет предо­став­лен (можно сразу после ввода дан­ных оче­ред­но­го посетителя). Ука­жи­те ис­поль­зу­е­мую вер­сию языка программирования, на­при­мер Borland Pascal 7.0.

 

Пример вход­ных данных:

3 10

Иванов 09:45 12:00

Петров 10:00 11:00

Сидоров 12:00 13:12

 

Результат ра­бо­ты про­грам­мы на этих вход­ных данных:

Иванов 1

Петров 2

Сидоров 1

 

Решение

 

#include <iostream>//подключение библиотеки

#include <string>//подключение библиотеки

using namespace std;//упрощение кода

void main() //тело программы

{

                struct pass//создание структуры

                {

                                string sname;//поле фамилии

                                int chas1;//поле первого часа

                                char c;//поле для хранения ':'

                                int min1;//поле первых минут

                                int chas2;//поле второго часа

                                char t;//поле для хранения ':'

                                int min2;//поле вторых минут

                                int time1;//поле времени сдачи багажа

                                int time2;//поле времени забирания багажа

                };

                int N, K, time1, time2;//объявление переменных

                setlocale(0, "");//русский язык

                cout << "Введите количество пассажиров" << endl;

                cin >> N;//размер массива структуры

                cout << "Введите количество ячеек в камере храения" << endl;

                cin >> K;//размер массива ячеек

                pass *a = new pass[N];//создание динамического массива для структуры

                int *p = new int[K];//создание динамического массива

                for (int i = 0; i<N; i++)//цикл ввода рассчета и проверки

                {

                                cin >> a[i].sname >> a[i].chas1 >> a[i].c >> a[i].min1 >> a[i].chas2 >> a[i].t >> a[i].min2;//ввод данных

                                time1 = a[i].chas1 * 60 + a[i].min1;//высчитывание времени сдачи

                                time2 = a[i].chas2 * 60 + a[i].min2;//высчитывание времени забора

                                for (int j = 0; j<K; j++)//цикл проверки

                                {

                                               if (p[j] <= time1)//цикл для запоминания времени забирания

                                               {

                                                               p[j] = time2;//присваивание

                                                               cout << a[i].sname << j + 1 << endl;//вывод

                                                               break;//выход из цикла

                                               }

                                }

                }

                cin.get(); cin.get();//задержка окон

}

Просмотров: 137 | Добавил: Надежда_Халтурина | Рейтинг: 0.0/0
Всего комментариев: 0
avatar