Форум программистов, компьютерный форум, киберфорум
Наши страницы
jQuery
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 447
1

Выбрать ближайшее значение из диапазона

03.08.2018, 18:33. Просмотров 853. Ответов 15
Метки нет (Все метки)

Здравствуйте, подскажите с решением, есть значения по оси x: 50,60,70,80,90,100,110 и по оси y:100,140,160,180,200,220.
Клиент вводит значение по x= 43, а по y=95, значит выбираем ближайшее значение по оси x=50,а по y=100, как сие реализовать?
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2018, 18:33
Ответы с готовыми решениями:

Выбрать из диапазона положительных и отрицательных числе ближайшее число к 0
Здравствуйте! Помогите пожалуйста с формулой для следующей задачи: Задан диапазон...

Выбрать ближайшее меньшее стандартное значение резистора
Здравствуйте помогите пожалуйста! Нужно сделать процедуру.... Задано рассчетное значение...

Записать прописью ближайшее к заданному четное число из введенного диапазона
Я думаю, что ошибка возникает из-за того, что переменная ch видна только в пределах своих циклов,...

Ближайшее будущее и DDR4: что выбрать?
Слышал о выходе оперативной памяти DDR4 и хотелось бы на будущее выяснить: какая конфигурация ПК...

Из двух чисел выбрать ближайшее к заданному числу
Макс и Владимир поспорили о том, сколько человек решат эту задачу. Макс говорит, что её решат A...

15
andyyy
732 / 298 / 146
Регистрация: 26.05.2016
Сообщений: 1,969
03.08.2018, 22:34 2
Offset()?
0
Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 447
04.08.2018, 06:18  [ТС] 3
Метод offset для получения координат, мне нужно получить ближайшее значение из массива удавлетворяющий введенному значению клиента, не обращайте внимания на слово Оси)
0
andyyy
732 / 298 / 146
Регистрация: 26.05.2016
Сообщений: 1,969
04.08.2018, 09:09 4
В смысле получить? Куда получить, откуда, просто в массиве перебрать, если ли там такие значения, в диапазоне ?
0
04.08.2018, 09:09
Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 447
04.08.2018, 09:19  [ТС] 5
Клиент ввёл ширину 42,высоту 115 значит из массива X берём 50, а из массива Y 140
0
andyyy
732 / 298 / 146
Регистрация: 26.05.2016
Сообщений: 1,969
04.08.2018, 09:31 6
Math.round() math.ceil()- округление, диапазон - простой массив, цикл for- для переборки
0
diadiavova
4126 / 1507 / 459
Регистрация: 11.04.2015
Сообщений: 2,771
Записей в блоге: 35
04.08.2018, 10:50 7
Javascript
1
2
3
4
5
6
        Array.prototype.nearest = function (i)
        {
            return this.map(x => x).sort((x, y) => Math.abs(x - i) - Math.abs(y - i))[0];
        }
 
        console.log([50, 60, 70, 80, 90, 100, 110].nearest(43), [100, 140, 160, 180, 200, 220].nearest(95));
1
Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 447
04.08.2018, 11:45  [ТС] 8
x и y это массивы?
0
diadiavova
4126 / 1507 / 459
Регистрация: 11.04.2015
Сообщений: 2,771
Записей в блоге: 35
04.08.2018, 11:56 9
Дмитрий Дмитрий, нет. Тебе не нужно к ним обращаться непосредственно, так что не обращай на них внимание.
0
Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 447
04.08.2018, 11:56  [ТС] 10
Не то, т.к. если ввести 53 за место 43 то консоль выводит 50, а должно 60 т.е. все одно что использовать math.ceil(), берет значение до 5 или после 5
Ссылка
0
diadiavova
4126 / 1507 / 459
Регистрация: 11.04.2015
Сообщений: 2,771
Записей в блоге: 35
04.08.2018, 12:02 11
Дмитрий Дмитрий, здрасте! 50 отличается от 53 на три, а 60 - на семь. Это и есть ближайшее, а если нужно что-то другое, то сформулируй вопрос более точно, поскольку мне непонятно, как 60 может быть ближе к 53 чем 50.
0
Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 447
04.08.2018, 12:08  [ТС] 12
Если ввели 51 то уже берем 60
0
diadiavova
4126 / 1507 / 459
Регистрация: 11.04.2015
Сообщений: 2,771
Записей в блоге: 35
04.08.2018, 12:16 13
Цитата Сообщение от Дмитрий Дмитрий Посмотреть сообщение
Если ввели 51 то уже берем 60
То есть ближайшее должно быть не меньше введенного? Тогда так
Javascript
1
2
3
4
5
6
        Array.prototype.nearest = function (i)
        {
            return this.filter(x => x >= i).sort((x, y) => Math.abs(x - i) - Math.abs(y - i))[0];
        }
 
        console.log([50, 60, 70, 80, 90, 100, 110].nearest(51), [100, 140, 160, 180, 200, 220].nearest(95));
0
Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 447
05.08.2018, 06:24  [ТС] 14
Спасибо, работает, только как применить, можно пример? Что за x и y, как подставлять введенные значения?
0
diadiavova
4126 / 1507 / 459
Регистрация: 11.04.2015
Сообщений: 2,771
Записей в блоге: 35
05.08.2018, 10:03 15
Лучший ответ Сообщение было отмечено Дмитрий Дмитрий как решение

Решение

Цитата Сообщение от Дмитрий Дмитрий Посмотреть сообщение
Спасибо, работает, только как применить, можно пример?
Если ты не понимаешь как это применить, то откуда знаешь, что работает?
Цитата Сообщение от Дмитрий Дмитрий Посмотреть сообщение
Что за x и y
Я же уже объяснил это выше
Цитата Сообщение от diadiavova Посмотреть сообщение
Тебе не нужно к ним обращаться непосредственно, так что не обращай на них внимание.
Цитата Сообщение от Дмитрий Дмитрий Посмотреть сообщение
как подставлять введенные значения?
Куда подставлять, ты о чем вообще? У тебя есть два массива x и y, тебе нужно из первого извлечь число близкое к 43, а из второго - близкое к 51, ну и извлекай: первую координату получишь с помощью x.nearest(43), вторую - y.nearest(51). Что непонятно? Метод добавлен прямо к прототипу массива, так что будет доступен для каждого массива. Я не знаю, что еще тут можно объяснить.
И кстати, метод можно реализовать как-то так, если, конечно в браузере поддерживается es6
Javascript
1
2
3
4
        Array.prototype.nearest = function (i)
        {
            return Math.min(...this.filter(x => x >= i));
        }
Или так, если не поддерживается
Javascript
1
2
3
4
        Array.prototype.nearest = function (i)
        {
            return Math.min.apply(null, this.filter(x => x >= i));
        }
Поскольку нет смысла в сортировке, если можно обойтись нахождением минимального значения, сортировка больше подходила для первого варианта, где искалось действительно ближайшее значение, а здесь это приведет только к лишним расходам ресурсов.
1
Дмитрий Дмитрий
1 / 1 / 2
Регистрация: 17.09.2016
Сообщений: 447
06.08.2018, 16:03  [ТС] 16
Спасибо огромное.

Добавлено через 1 минуту
Цитата Сообщение от diadiavova Посмотреть сообщение
а здесь это приведет только к лишним расходам ресурсов
т.е. лучше использовать этот вариант
Javascript
1
2
3
4
Array.prototype.nearest = function (i)
        {
            return Math.min.apply(null, this.filter(x => x >= i));
        }
0
06.08.2018, 16:03
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2018, 16:03

Ближайшее значение в списке
Доброго времени суток! Делала лабораторную работу по деревьям. Вершины представила списком и в...

Вытащить из массива ближайшее значение
Доброго времени суток, уважаемые форумчане! Подскажите, пожалуйста. Имеется массив: double...

Найти элемент последовательности(его порядковый номер и значение,ближайшее к n).
Помогите пожалуйста решить!!! 1.Даны последовательность вещественных чисел и число n.Найти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.