|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.12.2016, 17:00 | #1 |
Пользователь
Регистрация: 30.11.2016
Сообщений: 22
|
Упростить решение Pascal: После каждого ингридента написано его количество, которое нужно добавлять в определенный момент времени, время для каждой части приготовления
Здравствуйте.
Имеется задача такого рода:файл input содержит строку типа: (((sugar 100 egg 3)5 butter 100 nut 200)4 (milk 200 cacao 50 sugar 100)3 )20 После каждого ингридента написано его количество, которое нужно добавлять в определенный момент времени, время для каждой части приготовления указано после скобки. файл output должен получить следующее: 32 - общее время приготовления cacao 50 - общее количество каждого элемента milk 200 nut 200 egg 3 butter 100 sugar 200 Ограничения: длина рецепта не более 1000, количество ингридиентов не более 100, время приготовления для каждой отдельной части не больше 100, кол-во каждого продукта - числа не более 1000. Задачу я и сам решил, только вот мое решение кажется мне не самым рациональным и излишне замудренным, если кому не лень - подскажите что можно упростить и улучшить. Заранее спасибо! Код:
Последний раз редактировалось nobody_nohead; 13.12.2016 в 17:58. |
13.12.2016, 17:14 | #2 |
Забанен
Форумчанин Подтвердите свой е-майл
Регистрация: 01.11.2006
Сообщений: 420
|
5 + 4 + 3 + 20 разве не 32? Числа после закрывающейся скобкой нужно сложить?
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
|
13.12.2016, 17:17 | #3 |
Пользователь
Регистрация: 30.11.2016
Сообщений: 22
|
Все верно, 32 - я так и написал. Если число указано после закрывающей скобки, а не ингридиента - то это число означает время именно для этой части рецепта. Т.е общее время - сумма всех этих чисел. Там с нахождением времени у меня вроде все впорядке, наврядле что-то проще можно придумать. Куда больше волнует именно обработка самих ингридиентов и их значений. Т.к длина рецепта может быть более 255, пришлось считывать информацию посимвольно и закидывать в массив. Не уверен, что это лучший вариант...
|
13.12.2016, 17:54 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
а куда butter делся, почему не вижу его в вашем примере в разделе output ?
кстати, это ещё от компилятора(версии) Pascal зависит. примерно с 1995 года компиляторы Pascal в качестве строки понимают AnsiString, она не ограничена 255 символами. это раз. а во-вторых, массив of char вполне допустим, что Вас смущает? |
13.12.2016, 17:56 | #5 | |
Пользователь
Регистрация: 30.11.2016
Сообщений: 22
|
Цитата:
p.s: там просто вместо butter случайно bread написал, сейчас исправлю. |
|
13.12.2016, 18:04 | #6 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,531
|
если это олимпиадная задача с автоматической проверкой по контрольной базе, то скорее всего она не пройдет контроль.
ПРИМЕР на котором ее засыпят: ( sug 2 (((sugar 100 egg 3)5 butter 100 nut 200)4 (milk 200 cacao 50 sugar 100)3 )20 ) 2 да я знаю что в словаре английского языка вряд ли найдется слово sug, но составителя контроля люди вредные.
программа — запись алгоритма на языке понятном транслятору
|
13.12.2016, 19:09 | #7 | |
Пользователь
Регистрация: 30.11.2016
Сообщений: 22
|
Цитата:
|
|
14.12.2016, 09:23 | #8 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,531
|
Цитата:
я сказал что результат полученный приведенной программой будет отличаться от контрольных результатов. Да даже и от твоего результата, полученного вручную (путем "ручного" выписывания ингредиентов). потому что вручную ты не делаешь в точности так как написано в программе. могу для подсказки сказать что в этом списке(полученным программным путем) вряд ли найдется sugar. P.S. исправление этой "ошибки" кстати приведет (или должно привести) к тому что программа станет работать немного быстрее. конечно при заданных ограничениях на входные данные это будут микросекунды, но тем не менее факт остается фактом.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 14.12.2016 в 10:38. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
нужно в одном листе все время вставлять определенный шаблон документа, который после редактируется (это справка о зарплате пенсионерам) | бухарик | Microsoft Office Excel | 11 | 05.12.2016 12:39 |
Передача данных в определенный момент (квант) времени по таймеру | eugenerock | Общие вопросы Delphi | 0 | 10.06.2015 12:40 |
Pascal Для каждого символа текста указать его относительную частоту появления в тексте | student___ | Помощь студентам | 52 | 02.05.2013 18:12 |
Для каждого аi найти ki количество его повторов последовательности. | Yakov112 | Общие вопросы C/C++ | 2 | 06.10.2012 23:18 |
посчитать значение по каждой статье за определенный период для каждого листа | Graver | Microsoft Office Excel | 5 | 04.12.2009 01:31 |