![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Дон |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: ![]() ![]() ![]() |
Парикмахерская. Для каждого посетителя парикмахерской (с одним мастером) известны следующие величины: t – момент его прихода и τ – продолжительность его обслуживания. Сколько клиентов обслужит мастер за смену продолжительностью Т? Сколько рабочего времени он потратит на обслуживание?
Момент прихода и продолжительность обслуживания вводятся пользователем.. Помогите,плизз,если кто может.. |
![]() ![]() |
Дон |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот уж фигушки...
Ничего я не сдался..стыдно просто... Просто вы задали вопрос на модернизацию,чтобы не вводить всех посетителей сразу.А я..ну не врублюсь...дурак наверно..но научиться хочу правда!!!! while not EoF do begin {регистрация клиентов} Вот это для меня вообще темный лес..но я хочу разобраться,что к чему... |
Lapp |
![]()
Сообщение
#3
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Вот уж фигушки... Ничего я не сдался.. И правильно! ![]() Вот это для меня вообще темный лес..но я хочу разобраться,что к чему... Не спеши. Время есть пока? Давай договоримся так: есть основные вопросы, и есть дополнительные. Основные никогда не бывают слишком трудными (типа: запустил? увидел?). На основные вопросы, будь добр, отвечай. Дополнительные могут быть очень трудными. На них отвечать совершенно необязательно. Я просто хочу передать тебе смысл и направление мысли. Результаты будут потом.. Итак, пока будем считать, что последний вариант (ver. 04) у тебя запустился и с ним ты разобрался (хотя, повторяю, ответа на это ты не дал). И если уж ты так увлекся тем вопросом, как сделать ввод клиентов без предварительного ввода их числа, то давай с этим разберемся (хотя без этого можно было бы обойтись). Для этого потребуется: 1. Заменить цикл FOR на цикл WHILE. Прочитай про него в Книге. По-простому, он повторяется пока выполняется то условие, которое ты поставишь после оператора while (перед do). Как только условие нарушится, повторение заканчивается и программа идет дальше. Например, while 2*2=4 do ... - будет повторяться бесконечно. А этот: while 2*2=5 do ... - не выполнится ни разу (здесь и выше идет речь о выполнении того, что стоит на месте многоточия). А вот этот: i:=1; while i<50 do i:=i*2; - выполнится раз. В первый раз i=1, во второй 2, в третий 4, в четвертый 8, потом 16, потом 32 - и все, для i=64 он уже не выполнится, и программа продолжит выполняться дальше, причем значение переменной i при этом уже будет равно 64. 2. Понятие конца файла. Дело в том, что ввод с клавиатуры вообще-то трактуется программой как ввод из файла. Это так называемый Стандартный Ввод. Как у любого файла, у него может быть конец. В Паскале есть специальная функция, которая говорит, что файл закончился. Это функиция EoF(f), название происходит от End of File. В скобках заключается переменная файла, но в случае стандартного ввода скобки можно опустить. То есть несмотря на то, что EoF выглядит как простая переменная, она все же является функцией. Эта функция входит в модуль System, который описывать в операторе uses не обязательно (и мы не описываем). Эта функция возвращает булево значение, то есть true (правда) или false (ложь). Понятно, что цикл while not EoF do ... - будет продолжаться до тех пор, пока не кончится стандартный ввод. А когда же он кончится?.. На этот случай есть некоторая хитрость. В DOS признаком конца текстового файла считается символ ^Z (Ctrl-Z), имеющий номер 26 (как последняя буква английского алфавита). А стандартный ввод трактуется как текстовый файл (в отличие от файлов на диске, которые могут быть разными: и текстовыми, и бинарными - все зависит от того, как ты их открываешь, но об этом потом). Так что по нажатии Ctrl-Z, а потом за ним Enter, функция EoF даст true. Условие в цикле перестанет выполняться ("не" "правда", то есть "неправда"), и повторение оператора (в данном случае группы операторов: ввод двух чисел и увеличение на единицу числа клиентов) прекратится. Тем самым мы автоматически подстчитываем, сколько клиентов пришло. Вот новая версия программы. Подтверди, пожалуйста, что она нормально отрабатывает и что тебе все понятно. Или задавай вопросы ![]() { for Don, BarberShop, ver.05, 01/12/06 } А вот пример ее работы. Код The Barber's shop is open 9.00 through 17.00 Vvedite vremya prihoda i obsluzhivaniya kazhdogo klienta po poraydku cherez probel po odnomu clientu na stroke. V konce nazhmite Ctrl-Z i Enter 8.5 2 9 0.25 10 1 13 0.5 14 1 14.5 2 ^Z Barber shop posetili 6 klientov. Vremya prihoda i obsluzhivaniya: 1: 8.50 2.00 2: 9.00 0.25 3: 10.00 1.00 4: 13.00 0.50 5: 14.00 1.00 6: 14.50 2.00 Как только разберешься, двинемся дальше и начнем саму работу парикмахера ![]() Успехов! -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 14:19 |