Ю3.7

Задача: Время обслуживания. Для каждого посетителя парикмахерской (с одним мастером) известны следующие величины: [latex]t[/latex] — момент его прихода и [latex]\tau[/latex] — продолжительность его обслуживания. Сколько клиентов обслужит мастер за смену продолжительностью [latex]T[/latex]? Сколько рабочего времени он потратит на обслуживание?

 [latex]T[/latex] t1 t2 k T1
600 200 210 500 550 50 300 10 50 4  410
600 50 100 200 498 550 30 50 200 10 40  5  330
 600 0 80 100 367 680 20 30 20 30 50  4 100
Используем цикл while, который останавливается при достижении конца файла (input). С начала проверяем пришел ли текущий клиент во время обслуживания предыдущего, если да, то обслуживание этого клиента начнется с момента окончания предыдущего. Потом проверяем не выходит ли момент прихода клиента и сумма времени прихода клиента и время его обслуживания за рамки смены парикмахера. После запоминаем текущие t1 (момент прихода клиента) и t2 (время обслуживания) в новые переменные, чтобы в последующем шаге цикла проверить первое условие. Считаем общее время обслуживание прибавляя на каждом шаге цикла t2. В каждом шаге цикла прибавляем к переменной k +1, что и будет количеством обслуженных клиентов.

Ideone.

Related Images:

5 thoughts on “Ю3.7

  1. Поздравляю! Это 100-е юбилейное решение на сайте. Какой бы бонус предложить автору 100-го сообщения?
    Логика программы правильная, но есть замечания:
    — пробелы перед открывающими скобками везде отсутствуют.
    — «не пришел ли текущий клиент раньше предыдущего». Нет, такое невозможно. Клиенты появляются во входном файле в порядке их появления в парикмахерской. Новый клиент всегда приходит позже старого. Но иногда до того, как старого постригут.

  2. Сразу скажу, что если время прихода клиента задаётся положительным числом, то всё отлично сработает. Но….
    — При первом витке цикла в 12-й строке переменным t12 и T2 ещё не присвоено значение. Надо бы до этого сравнения присвоить что-то разумное.
    — Поправьте отступ в строке 9.
    — Во фразе «нашим количеством» я бы ограничился просто «количеством», но это дело автора.
    — T2 — это расчётное время ухода предыдущего клиента? Напишите в комментарии.
    — Зачем проверять t1 < t12? Следующий клиент приходит после предыдущего. В этом смысл слов «следующий» и «предыдущий». Т.е. это условие всегда false и значит ничему не мешает. Но запутывает. Я бы убрал. В пояснении Вы это убрали, а в программе осталось.
    — В 12-й строке: t1 = t12 + t22 это просто t1 = T2? Т.е. вся строка эквивалентна выражению t1 = max(t1, T2)? Мне кажется, это будет понятнее.

Добавить комментарий