![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 357
|
к примеру, в массиве есть 1, 5 и 9. как вычислить ближайшее к 4 число?
|
|
|||||
|
Регистрация: Jun 2009
Сообщений: 42
|
модуль разности с 4 считай
у какого числа меньше, то и ближе |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 357
|
можно подробнее?
|
|
|||||
|
По-моему, стандартных функций нет - ошибаюсь?
Можно так: var number:Number = 4;//число, с которым нужно сравнить var array:Array = [1, 3, 0, 6, 8, 9];//массив, в котором ищем var result:Number = array[0]; var minDelta:Number = Math.abs(array[0] - number); for(var i:int = 1; i < array.length; i++) { var currentDelta:Number = Math.abs(array[i] - number); if(currentDelta < minDelta) { minDelta = currentDelta; result = array[i]; } } trace(result);//теперь это самое близкое число(значение, а не индекс массива) |
|
|||||
|
__________________
я могу стать всем, если только захочу |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 357
|
expl, наверное, это мне подойдет. а что делать, если в массиве дробные числа (и число для сравнения - тоже дробное)? убрав Math.abs я получаю некорректный результат. как узнать номер результата в массиве?
Felicast, arr - это массив? можете прокоментировать свой код? Последний раз редактировалось loover; 22.06.2009 в 04:07. |
|
|||||
|
abs это модуль числа, а не удаление дробной части
Последний раз редактировалось ramshteks; 22.06.2009 в 04:19. |
|
|||||
|
1) берем массив чисел, среди которых нужно искать
2) из каждого вычетаем искомое (4) и берем по модулю (abs) 3) ищем минимальное (при сортировке по возрастанию, например, оно будет первым) - его оригинал и будет самым близким к искомому. |
|
|||||
|
пункт 2 и 3 можно уместить в одном цикле. Эта задачка для пятикласника
|
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
///число, с которым нужно сравнить var number:Number = 4; ///массив, в котором ищем var array:Array = [1, 3, 0, 6, 8, 9,5]; var arraySort:Array = array.concat(); arraySort.push (number); arraySort.sort (Array.NUMERIC); var index:int = arraySort.indexOf(number); /// теперь берем числа справа и слева от index и узнаем более близкое по значению к number |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|