Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015

Здесь есть возможность читать онлайн «Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Год выпуска: 0101, Издательство: Вильямс, Жанр: Старинная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Язык программирования C. Лекции и упражнения (6-е изд.) 2015: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Язык программирования C. Лекции и упражнения (6-е изд.) 2015»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Язык программирования C. Лекции и упражнения (6-е изд.) 2015», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

typedef struct item

{

long arrive; /* время присоединения клиента к очереди */

int processtime; /* желаемое количество минут консультации */

} Item;

Для преобразования пакета очереди, чтобы он обрабатывал эту структуру, а не тип int, использованный в последнем примере, достаточно заменить предыдущее опрсде-

756 Глава 17 лсиие typedef типа Item приведенным выше. После этого вам не придется беспокоиться о деталях функционирования очереди. Вместо этого вы сможете сосредоточить все внимание на реальной задаче — моделировании очереди к киоску Зигмунда.

Рассмотрим один из возможных подходов. Пусть отсчет времени осуществляется одноминутными интервалами. Тогда каждую минуту необходимо проверять, не появился ли новый клиент. Если клиент подошел, и очередь не переполнена, клиента необходимо добавить в очередь. Это предусматривает запись в структуру Item времени прибытия клиента и длительности консультации, которую клиент желает оплатить, с последующим добавлением элемента в очередь. Однако если очередь полна, клиента нужно отправить. В целях учета мы будем отслеживать общее число клиентов и общее количество “отказов” (людей, которые не могут стать в очередь, поскольку она переполнена).

Далее потребуется обработать начало очереди. То есть, если очередь не пуста и Зигмунд не занят обслуживанием предыдущего клиента, необходимо удалить элемент из начала очереди. Вспомните, что элемент содержит показание времени присоединения клиента к очереди. Сравнивая это показание с текущим временем, мы получаем время нахождения клиента в очереди (в минутах). Элемент содержит также количество минут, в течение которых клиент желает получить консультацию; это значение определяет интервал, на протяжении которого Зигмунд будет занят обслуживанием нового клиента. Для отслеживания времени ожидания мы применяем переменную. Если Зигмунд занят, из очереди никто не удаляется, но значение переменной для отслеживания времени ожидания должно декрементироваться.

Основной код может выглядеть похожим на показанный далее, при этом каждый цикл соответствует одной минуте активности:

Обратите внимание что разрешение времени является относительно грубым одна - фото 564

Обратите внимание, что разрешение времени является относительно грубым (одна мииуга), так что максимальное количество клиентов в час составляет всего 60.

Расширенное представление данных 757

Ниже представлены краткие описания некоторых переменных и функций.

• min per cust — среднее количество минут между прибытиями клиентов.

• newcustomer() использует функцию rand() языка С для определения, появляется ли клиент в течение этой конкретной минуты.

• turnaways — количество прибывших клиентов, которым было отказано в обслуживании.

• customers — количество прибывающих клиентов, которые становятся в очередь.

• temp — переменная типа Item, описывающая нового клиента.

• customertime() устанавливает члены arrive и processtime структуры temp.

• wait time — количество минут, остающееся до того момента, когда Зигмунд завершит консультирование текущего клиента.

• line wait — накапливаемое значение времени, потраченное в очереди всеми клиентами на текущий момент.

• served — количество действительно обслуженных клиентов.

• sum line — накапливаемое значение длины очереди на текущий момент.

Только подумайте, насколько более запутанным и непонятным выглядел бы код, если бы он оказался усыпанным вызовами функций malloc() и free() и указателями на узлы. Наличие пакета очереди позволяет сосредоточиться на задаче моделирования, не отвлекаясь на детали программирования.

Полный код для моделирования консультационного киоска в торговом центре представлен в листинге 17.9. В соответствие с методом, предложенным в главе 12, для генерации случайных значений применяются стандартные функции rand(), srand() и time(). Чтобы можно было использовать программу, обновите определение типа Item в файле queue.h следующим образом:

typedef struct item

{

long arrive; // время присоединения клиента к очереди

int processtime; // желаемое количество минут консультации

} Item;

Не забудьте также выполнить компоновку mall.с с queue.с.

Листинг 17.9. Программа mall.с

Язык программирования C Лекции и упражнения 6е изд 2015 - фото 565

758 глава 17

Расширенное представление данных Программа позволяет указывать количество часов - фото 566

Расширенное представление данных Программа позволяет указывать количество часов - фото 567 Расширенное представление данных Программа позволяет указывать количество часов - фото 568

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Язык программирования C. Лекции и упражнения (6-е изд.) 2015»

Представляем Вашему вниманию похожие книги на «Язык программирования C. Лекции и упражнения (6-е изд.) 2015» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Язык программирования C. Лекции и упражнения (6-е изд.) 2015»

Обсуждение, отзывы о книге «Язык программирования C. Лекции и упражнения (6-е изд.) 2015» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x