|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
09.04.2007, 10:48 | #1 |
Регистрация: 09.04.2007
Сообщений: 3
|
Поиск позиции элемента несортированного массива
Народ, помогите решить проблему. Есть массив из, скажем, семи различных цифр (строка). В строке числа несортированы и отсортировать их никак нельзя. Менять значения в ячейках тоже нельзя. Нужно найти в массиве позицию (адрес) такого числа значение которого было бы больше или равно, чем наибольшее число уменьшанное на 20.
Пример1: -48 -158 -65 -65 -214 -47 -336 В данном массиве нужно найти позицию числа "-47" (Наибольшее число "-48". Уменьшенное на -20 будет "-68". Число "-47" больше, чем "-68", следовательно, нужна позиция числа "-47". Пример2: 236 -443 -350 -350 -499 - 331 -620 Наибольшее число "236". Уменьшенное на 20 будет "216". Остальные числа все меньше чем "216", следовательно" нужное чило "236" Более глобально задача выглядит так: Мне нужно определить находится ли максимальное число в первом столбике или в любом другом. Причем число должно быть больше других на 20. Если это условие не выполняется, то нужное число - это ближайшее к маскимальному минус 20. В принципе вместо этого всего сойдёт просто поиск ближайшего по значению элемента массива, а остальное я уж как-нибудь сам. Последний раз редактировалось gdneon; 09.04.2007 в 12:14. |
09.04.2007, 14:12 | #2 |
Форумчанин
Регистрация: 03.11.2006
Сообщений: 524
|
Если я Вас правильно понял, а понедельник, как известно день тяжёлый, то для решения своего вопроса, Вы можете воспользоваться следующей формулой :
{=ПОИСКПОЗ(МИН(ЕСЛИ((A2:G2)>=МАКС(A 2:G2)-20;A2:G2));A2:G2;0)} Только обратите внимание на то, что : - вышеопубликованная формула является формулой массива, а это значит, что после её ввода (без фигурных скобок) необходимо нажать клавиши CTRL + SHIFT + ENTER - если искомых значений окажется несколько, то будет "выбрана" позиция наименьшего из имеющихся - в первом примере наибольшее число, это -47 (не -48) Кстати, если Вы не собираетесь добавлять/удалять столбцы (), то позицию можно определить и через номер столбца (хотя первый вариант менее зависим от изменений) {=МИН(ЕСЛИ((A2:G2)>=МАКС(A2:G2)-20;СТОЛБЕЦ(A2:G2)))} Последний раз редактировалось pashulka; 09.04.2007 в 15:06. |
10.04.2007, 06:36 | #3 |
Регистрация: 09.04.2007
Сообщений: 3
|
Большое спасибо!
Да, понедельник действительно день тяжёлый. Дело в том, что я неправильно сформулировал условия. ) В примере1 нужное число "-48", а не "-47". (в исходном массиве число "-47" - максимальное, уменьшаем его на 20 и максимальным становится "-48", следовательно и позиция нужна числа "-48"). Решение осложняется тем, что функция ПОИСКПОЗ просматривает весь исходный массив и, соотвественно, не учитывает уменьшение на 20. Последний раз редактировалось gdneon; 10.04.2007 в 06:38. |
10.04.2007, 17:57 | #4 |
Форумчанин
Регистрация: 03.11.2006
Сообщений: 524
|
Вторник тоже не самый лучший день, ибо до пятницы ещё далеко, тем не менее предлагаю ознакомиться со следующим примером, возможно он окажется для Вас полезен ...
|
16.04.2007, 08:08 | #5 |
Регистрация: 09.04.2007
Сообщений: 3
|
Спасибо большое, но я уже эту свою задачу решил совсем по другому. Может кому ещё понадобится.. )
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление элемента динамического массива | Dogmat | Помощь студентам | 6 | 13.07.2008 14:33 |
Поиск элемента | ЭД4-0014 | Помощь студентам | 12 | 05.06.2008 21:47 |
Удаление элемента массива | chiffa | Общие вопросы Delphi | 1 | 03.01.2008 19:24 |