IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Простенький линейный алгоритм?
OneDose
сообщение 17.06.2010 11:07
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Денис

Репутация: -  0  +


Имеется такое задание:
Хозяин хочет оклеить обоями квартиру. Определить количество необходимых рулонов и затрат на их приобретение.

Мне очень стыдно, но не могу решить ее используя линейный алгоритм blink.gif
Как я прнимаю, отношение площади стен к площади рулона даст количество рулонов, но количество рулонов должно быть целым числом...

Сообщение отредактировано: OneDose - 17.06.2010 11:26
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
TarasBer
сообщение 18.06.2010 9:23
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> Не могли бы Вы объяснить, почему это решение будет неверно для S,S1 : real ?

Для этого типа не определена операция mod.
Тогда придётся писать N := upRound(S/S1); (вот это точно самый читаемый вариант).
Функцию upRound придётся отдельно определить:

function upRound(r: real): longint;
var
res: longint;
begin
res := round®;
if res < r then inc(res);
upRound := res;
end;



> TarasBer, не могли бы вы расписать Ваш вариант в констекте написанного выше кода, я, к сожалению, не совсем понимаю что Вы имеете ввиду...

Ну просто заменяешь 2 строчки


if((S mod s1) <> 0) then N:=(S div S1)+1
else N:=S div S1;


На одну:

N := (S + S1 - 1) div S1;



Сообщение отредактировано: TarasBer - 18.06.2010 9:29


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 12:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"