|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.05.2012, 20:03 | #1 |
Новичок
Джуниор
Регистрация: 27.05.2012
Сообщений: 6
|
Поиск числа в массиве, операции с минимально отличающимися от заданного числами
Доброго времени суток. Возникла проблема при сравнении числа с элементами массива.
Постараюсь как можно подробнее объяснить суть проблемы, и, быть может, кто то сможет мне помочь. Имеется два массива. Один состоит из двух столбцов, длинной в 51, где каждому значению поставлено в соответствие то значение, что находится на этой же строке. Второй массив состоит так же из двух столбцов с такими же соответствиями левого значения правому, но количество этих значений 1000 и для удобства они расположены в столбцах по 100 значений, разделенных между каждой парой соответствующих значений пустым столбцом. Из первого массива берется одно число, по выбору пользователя и во втором массиве ищется число, совпадающее с выбранным. Если таковое найдено - выводится окно с сообщением значения этого числа и значением, поставленным ему в соответствие. Если такое число не найдено, то во всем массиве разыскиваются два числа максимально приближенных к заданному сверху и снизу (т.е минимально отличающееся в большую сторону и минимально отличающееся в меньшую сторону). Для удобства обозначим их a и b, а значения, поставленные им в соответствие k и m. Из а вычитается b, обозначим с, из k вычитается m, обозначим d, затем с делится на d, обозначим как v Вновь берется или a или b, в зависимости от того, какое максимально близко к первоначальному значению, выбранному пользователем. Вне зависимости от того, близко сверху или снизу. Находится разница между выбранным числом и исходным, заданным пользователем. Эта разница умножается на v. Полученное число обозначим h Если число, минимально отличающееся от заданного, находится сверху от числа, заданного пользователем, т.е больше его, то из этого числа, минимально отличающегося от заданного, вычитается h. Если же число, минимально отличающееся от заданного, меньше него, то к нему прибавляется h Полученное число выводится на экран. Числа, используемые в массивах берутся до шестого знака, сами по себе они довольно небольшие. Если возможно написать такой макрос - буду премного благодарен. Заранее спасибо. |
27.05.2012, 20:06 | #2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
небось интерполировать чего-то задумали?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
27.05.2012, 20:09 | #3 |
Новичок
Джуниор
Регистрация: 27.05.2012
Сообщений: 6
|
Нет, это система, рассчитывающая зависимость между сложностью вопросов в тесте, процентом правильных ответов и оценкой учащегося. Но коэффициенты, полученные при расчете теста, имеющего пятьдесят вопросов имеют небольшую погрешность, отсутствующую в таблице с тысячей значений. Вот и требуется эту погрешность устранить.
|
27.05.2012, 20:21 | #4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
обьяснено хорошо, но пример бы... что бы не париться потом, как то что тут напишут к своим данным прикрутить
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
27.05.2012, 20:47 | #5 |
Новичок
Джуниор
Регистрация: 27.05.2012
Сообщений: 6
|
Хорошо, завтра постараюсь достать реальный образец, над которым можно будет провести опыты))
|
28.05.2012, 20:24 | #6 |
Новичок
Джуниор
Регистрация: 27.05.2012
Сообщений: 6
|
Небольшие исправления и файлик
Результаты сравнения.
Действия программы. 1. На листе 2 прикрепленного файла пользователь выбирает ячейку, расположенную в ряду Н с 5 по 54 значения, запускает макрос. Значение выбранной ячейки, для удобства пояснения принципа работы программы, обозначим как P. 2. Программа ищет на листе 6, в ряду G с 3 по 52 строки значение, совпадающее с P, и, если такое найдено, то создается лист 7, на котором располагаются значения: A1 = «Pj» A2 = «βj(1505)» B1 = значению P, B2 = значению ячейки, располагающейся на листе 6 в той же строке, что и найденное значение P, но в столбце K. Иными словами ставящееся в соответствие с найденным значением. 3. Выводится текстовое сообщение: Искомое значение найдено. Расчет не проводился. 4. Если же значения, абсолютно соответствующего значению P на листе 6,в ряду G не найдено, то программа ищет в этом же ряду два значения, минимально отличающиеся от P. Одно значение, отличающееся в большую сторону, его обозначим как a, второе, минимально отличающееся из всех значений в меньшую сторону, его обозначим как b. Значение ячейки, находящейся в той же строке, что и а, но в столбце К, обозначим как k, значение ячейки, расположенной в той же строке, что и b, но в столбце K, обозначим как m. 5. Затем производится расчет: (a - b)/(k – m) = v 6. Вновь берется или a или b, в зависимости от того, какое ближе к P, исходному числу, вне зависимости от того, сверху или снизу. Допустим, это число а, тогда из а вычитается P и эта разница умножается на v. Обозначим как h. 7. Затем к числу, соответствующему числу a (если оно было максимально близко к искомому), или же к числу, соответствующему числу b (если оно было максимально близко к искомому) соответственно k и m прибавляется h. Обозначим за B. 8. Создается лист 7. Значения ячеек: A1 = «Pj» A2 = «βj(1505)» B1 = значению P, B2 = значению В. Выводится текстовое сообщение: « Был произведен расчет. Найденное значение βj(1505) = «значение В» На этом программа завершает свою работу. Можно ли вообще рассчитать такое? Если да - буду премного благодарен) |
28.05.2012, 23:31 | #7 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Все по вашему алгоритму
Код:
Анализ,обработка данных Недорого
|
30.05.2012, 16:22 | #8 |
Новичок
Джуниор
Регистрация: 27.05.2012
Сообщений: 6
|
Спасибо!
Огромное спасибо! Ваш код себя полностью оправдал!
Скажите, на какой из Ваших кошельков Вам будет удобнее получить от меня небольшой подарок, за быстрое и своевременное решение? |
30.05.2012, 16:39 | #9 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
На любой,который в подписи,на какой вам удобно.Если проживаете на Украине,то и на карту привата подойдет.
Анализ,обработка данных Недорого
|
30.05.2012, 18:43 | #10 |
Новичок
Джуниор
Регистрация: 27.05.2012
Сообщений: 6
|
Хорошо, для меня самым удобным способом будет рублевый кошелек))
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C + Assembler: Поиск наибольшего числа в массиве | Arnezami | Помощь студентам | 1 | 05.02.2012 10:10 |
Поиск максимального по модулю числа в массиве ( Assembler ) | Forversc | Помощь студентам | 3 | 30.01.2012 15:05 |
Операции с большими числами | mrChester | Общие вопросы C/C++ | 4 | 08.12.2010 15:22 |
поиск определенного числа, в отсортированном массиве (с++) | askerpro | Общие вопросы C/C++ | 7 | 29.04.2010 23:26 |
Поиск числа, большего заданного | pirozho4ek | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 21.05.2007 21:39 |