Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.06.2009, 04:53
loover вне форума Посмотреть профиль Отправить личное сообщение для loover Найти все сообщения от loover
  № 1  
Ответить с цитированием
loover
 
Аватар для loover

Регистрация: Mar 2009
Сообщений: 357
По умолчанию как узнать, какое из имеющихся чисел наиболее близко к данному

к примеру, в массиве есть 1, 5 и 9. как вычислить ближайшее к 4 число?

Старый 21.06.2009, 04:57
bugizavr вне форума Посмотреть профиль Отправить личное сообщение для bugizavr Найти все сообщения от bugizavr
  № 2  
Ответить с цитированием
bugizavr

Регистрация: Jun 2009
Сообщений: 42
модуль разности с 4 считай
у какого числа меньше, то и ближе

Старый 21.06.2009, 19:49
loover вне форума Посмотреть профиль Отправить личное сообщение для loover Найти все сообщения от loover
  № 3  
Ответить с цитированием
loover
 
Аватар для loover

Регистрация: Mar 2009
Сообщений: 357
можно подробнее?

Старый 21.06.2009, 20:01
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 4  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
По-моему, стандартных функций нет - ошибаюсь?
Можно так:
Код AS3:
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);//теперь это самое близкое число(значение, а не индекс массива)

Старый 21.06.2009, 20:08
Felicast вне форума Посмотреть профиль Отправить личное сообщение для Felicast Найти все сообщения от Felicast
  № 5  
Ответить с цитированием
Felicast
 
Аватар для Felicast

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
Код AS3:
var tmpRez:int = int.MAX_VALUE;
var a:int = 4;
var rez:int = a;
for each (var tmp:int in arr)
{
	if (Math.abs(tmp - a) < tmpRez)
	{
		rez = tmp;
		tmpRez = Math.abs(tmp - a);
	}
}
__________________
я могу стать всем, если только захочу

Старый 22.06.2009, 03:53
loover вне форума Посмотреть профиль Отправить личное сообщение для loover Найти все сообщения от loover
  № 6  
Ответить с цитированием
loover
 
Аватар для loover

Регистрация: Mar 2009
Сообщений: 357
expl, наверное, это мне подойдет. а что делать, если в массиве дробные числа (и число для сравнения - тоже дробное)? убрав Math.abs я получаю некорректный результат. как узнать номер результата в массиве?
Felicast, arr - это массив? можете прокоментировать свой код?


Последний раз редактировалось loover; 22.06.2009 в 04:07.
Старый 22.06.2009, 04:17
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 7  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
abs это модуль числа, а не удаление дробной части


Последний раз редактировалось ramshteks; 22.06.2009 в 04:19.
Старый 22.06.2009, 07:24
Lecosson вне форума Посмотреть профиль Отправить личное сообщение для Lecosson Найти все сообщения от Lecosson
  № 8  
Ответить с цитированием
Lecosson

Регистрация: Apr 2008
Сообщений: 80
Записей в блоге: 3
1) берем массив чисел, среди которых нужно искать
2) из каждого вычетаем искомое (4) и берем по модулю (abs)
3) ищем минимальное (при сортировке по возрастанию, например, оно будет первым) - его оригинал и будет самым близким к искомому.

Старый 22.06.2009, 12:19
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 9  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
пункт 2 и 3 можно уместить в одном цикле. Эта задачка для пятикласника

Старый 22.06.2009, 12:31
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Код AS3:
///число, с которым нужно сравнить
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
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 08:43.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.