![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите пожалуйста как реализовать кратность? [D6, WinXP]
DimMih © (2005-06-23 17:43:00)Подскажите пожалуйста как реализовать кратность? Например у меня есть число 13. Мне нужно найти ближайшее к нему кратное пяти т.е. 15
evvcom (2005-06-24 09:04:00) [1]
> Например у меня есть число 13. Мне нужно найти ближайшее к нему кратное пяти
Не хватает одного условия для решения задачи. А если у тебя есть число 15 и тебе надо найти "ближайшее к нему кратное" шести? Это будет какое число 12 или 18?
Юрий Зотов (2005-06-23 18:02:00) [2]> Amoeba © (23.06.05 17:48) [1]
N1 := 13 mod 5; // Получили N1=3
if N1 > 0 then
N2 := 5 * (N1 div 5 + 1) // Получили N2 = 5
else
N2 := N1;
И где ж тут 15?
> DimMih © (23.06.05 17:43)
Подсказка:
N1 := (13 div 5) * 5 // Число, кратное 5 и ближайшее к 13 снизу
N2 := N1 + 5 // Число, кратное 5 и ближайшее к 13 сверху
Осталось из двух чисел N1 и N2 выбрать одно - то, которое ближе к 13 по абсолюту. Это уж Вы сами.
-=XP=- (2005-06-23 18:01:00) [3]N1 := 13 mod 5;
if N1 > 0 then
N2 := 5 * (N1 div 5 + 1)
Что-то мне подсказывает, что (N1 mod N2) div N2 всегда даст 0.
-=XP=- (2005-06-23 17:55:00) [4]function RepetitionFactor(aNum, aRep: integer): integer;
begin
Result := aRep * (aNum div aRep);
if (aNum mod aRep > aRep/2) then Result := Result + aRep;
end;
DimMih (2005-06-23 17:53:00) [5]Спасибо за помощь
Amoeba (2005-06-23 17:48:00) [6]N1 := 13 mod 5;
if N1 > 0 then
N2 := 5 * (N1 div 5 + 1)
else
N2 := N1;