![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
OneDose |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Денис Репутация: ![]() ![]() ![]() |
Имеется такое задание:
Хозяин хочет оклеить обоями квартиру. Определить количество необходимых рулонов и затрат на их приобретение. Мне очень стыдно, но не могу решить ее используя линейный алгоритм ![]() Как я прнимаю, отношение площади стен к площади рулона даст количество рулонов, но количество рулонов должно быть целым числом... Сообщение отредактировано: OneDose - 17.06.2010 11:26 |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ну, так вот и проверь, делится ли площадь комнаты нацело на площадь рулона (перефразируем: нулевой ли остаток от деления площади стен на площадь рулона; для получения остатка целочисленного деления есть MOD). Если остаток НЕнулевой, то к частному (целочисленное деление - это DIV) придется прибавить еще 1.
Это все верно только если площади (и стен и рулонов) - целочисленные. Поскольку ты никаких вводных не дал, я трактую это так, как нравится мне, а мне удобнее считать все данные именно целочисленными, а не вещественными. |
TarasBer |
![]()
Сообщение
#3
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну, так вот и проверь, делится ли площадь комнаты нацело на площадь рулона (перефразируем: нулевой ли остаток от деления площади стен на площадь рулона; для получения остатка целочисленного деления есть MOD). Если остаток НЕнулевой, то к частному (целочисленное деление - это DIV) придется прибавить еще 1. Может, вместо взятия остатка проще сразу считать (a+b-1) div b? -------------------- |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Ну, чего и следовало ожидать, оптимизация начинается... ПРОЩЕ - с div/mod... Тебе БЫСТРЕЕ и КОРОЧЕ надо? Пиши в маш. кодах, на кой тебе компилятор? Человек только начинает изучать язык, нет, тебе надо обязательно прийти и написать какую-то хрень, чтоб отбить у него желание начинать разбираться. Додумается сам до такого "упрощения" (я бы за такие "упрощения" руки отрывал) - сделает. Не додумается - значит ему же лучше...
|
TarasBer |
![]()
Сообщение
#5
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> Ну, чего и следовало ожидать, оптимизация начинается...
Это плохо? Да, статью ту я читал. Опасная статья. Слишком модно стало размахивать ей, как библией, отрицая вообще любую оптимизацию. > ПРОЩЕ - с div/mod... Кто сказал? Это твоё субъективное мнение, не более. А моё субъективное мнение, что с одним div проще. А вот то, что div/mod вынудит процессор делать лишние действия, это объективная реальность. > Пиши в маш. кодах, на кой тебе компилятор? Ну компилятору тоже надо помогать. Зачем его путать? > я бы за такие "упрощения" руки отрывал А я бы - за усложнения. Зачем делать сложно, когда логичнее, читаемее итд делать просто? Сообщение отредактировано: TarasBer - 17.06.2010 13:15 -------------------- |
OneDose |
![]()
Сообщение
#6
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Денис Репутация: ![]() ![]() ![]() |
volvo, я правильно Вас понял?
Я начинающий и не знаю, можно ли назвать это линейным алгоритмом, или это алгоритм с ветвлением. Не могли бы Вы объяснить, почему это решение будет неверно для S,S1 : real ? Текст задачи -это все что есть, никаких вводных данных не прилагается ![]() TarasBer, не могли бы вы расписать Ваш вариант в констекте написанного выше кода, я, к сожалению, не совсем понимаю что Вы имеете ввиду... Есть вариант решения данной задачи, на который я не смею ссылаться ввиду отсутствия представления о принципах его работы( начиная с того, что я понятия не имею, откуда взялся раздел описания констант) Спойлер (Показать/Скрыть)
Спасибо за помошь и поддержку! ![]() Сообщение отредактировано: OneDose - 17.06.2010 20:20 |
TarasBer |
![]()
Сообщение
#7
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> Не могли бы Вы объяснить, почему это решение будет неверно для S,S1 : real ?
Для этого типа не определена операция mod. Тогда придётся писать N := upRound(S/S1); (вот это точно самый читаемый вариант). Функцию upRound придётся отдельно определить:
> TarasBer, не могли бы вы расписать Ваш вариант в констекте написанного выше кода, я, к сожалению, не совсем понимаю что Вы имеете ввиду... Ну просто заменяешь 2 строчки
На одну:
Сообщение отредактировано: TarasBer - 18.06.2010 9:29 -------------------- |
OneDose |
![]()
Сообщение
#8
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Денис Репутация: ![]() ![]() ![]() |
Огромное спасибо, в одну строчку - это как раз то,что нужно!
![]() |
Lapp |
![]()
Сообщение
#9
|
|||
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
|||
![]() ![]() |
![]() |
Текстовая версия | 22.06.2025 2:45 |