|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
25.06.2008, 12:17 | #1 |
Пользователь
Регистрация: 25.06.2008
Сообщений: 11
|
нахождение в массиве суммы значений, удовлетворяющих условию
В простейшем случае имеем массив (матрицу) 2Х2, заполненную произвольными числами (реально- произвольное количество столбцов и строк). Нужно просуммировать каждое число с каждым по строкам. В простейшей матрице- это: a1+b1; a1+b2; a2+b1;a2+b2. Из полученных значений нужно выбрать наиболее приближенное к заданному условию (числу), или совпадающее с ним. Условие вводится вручную, как и данные в таблицу. Понимаю, что это операции с массивами, но как быть дальше?
Для матрицы 3х3: a1+b1+c1 a1+b2+c1 a1+b3+c1 a1+b1+c2 a1+b1+c3 a1+b2+c2 a1+b2+c3 a1+b3+c2 a1+b3+c3 a2+b1+c1 a2+b2+c1 a2+b3+c1 a2+b1+c2 a2+b1+c3 a2+b2+c2 a2+b2+c3 a2+b3+c2 a2+b3+c3 a3+b1+c1 a3+b2+c1 a3+b3+c1 a3+b1+c2 a3+b1+c3 a3+b2+c2 a3+b2+c3 a3+b3+c2 a3+b3+c3 Максимальное число столбцов-5, строк- 100 |
25.06.2008, 12:22 | #2 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
А где исходно находятся данные матрицы?
Если Цитата:
Чем шире угол зрения, тем он тупее.
|
|
25.06.2008, 12:31 | #3 |
Пользователь
Регистрация: 25.06.2008
Сообщений: 11
|
на листе Excel
|
25.06.2008, 13:36 | #4 |
Форумчанин
Регистрация: 26.11.2006
Сообщений: 584
|
azov
a1+b1+c1 a1+b2+c1 a1+b3+c1 a1+b1+c2 -Это первый(левый) столбец в матрице? a1+b1+c3 a1+b2+c2 a1+b2+c3 a1+b3+c2 a1+b3+c3 |
25.06.2008, 14:33 | #5 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Уточните, что в Вашем примере означают a1, b1, c1 и т.д.
Другими словами, не понял, что значит Цитата:
a b c d e Значения каких сумм получать для последующего анализа в этой строке?
Чем шире угол зрения, тем он тупее.
|
|
25.06.2008, 15:05 | #6 |
Пользователь
Регистрация: 22.05.2008
Сообщений: 82
|
SAS888, azov имеет ввиду ячейки A1, B1,C1, A2,B2.C2, A3,B3,C3.
И вот значения из этих ячеек нужно сложить в разных вариантах. Приведен пример для матрицы 3х3. А хотелось бы общий вариант на VBA. |
25.06.2008, 15:13 | #7 |
Пользователь
Регистрация: 25.06.2008
Сообщений: 11
|
a....e- произвольные положительные целые числа,которые вводятся в таблицу как исходные данные. Подсчет ведется по вышеприведенному алгоритму путем суммирования каждого числа первого столбца с перебором всех чисел в последующих. Для примера я привел перебор возможных значений в таблице3х3
|
25.06.2008, 15:13 | #8 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
SAS888, ZORRO2005 - это снова сочетания. Перебираем все возможные сочетания элементов по столбцам т.е. в сочетании должно быть по одному элементу с каждого столбца. для каждого сочетания определяем сумму его элементов, там где квадрат разности суммы элементов и цели будет наименьшим - это сочетание и победило.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
25.06.2008, 15:16 | #9 |
Пользователь
Регистрация: 25.06.2008
Сообщений: 11
|
Dsapa, вы, наверное, точнее изложили
|
25.06.2008, 15:31 | #10 |
Форумчанин
Регистрация: 30.01.2008
Сообщений: 314
|
вот рыба рекурсивного алгоритма
Sub recur(ByVal c As Long, r As Long, sm As Double, maxc As Long)
Dim i As Long For i = 1 To r sm = sm + arr(r, c) ' накапливаем сумму If c < maxc Then 'если это не последний элемент суммы, то Call recur(c + 1, r, sm, maxc) ' идем дальше Else ' иначе начинаем сравнивать результат dr_r = Abs(sm - dm) ' если есть приближение к заданному значению If dr_r < dr Then If dr_r < dt Then ' если сумма удовлетворяет заданной точности( равна заданному значению) то, наверное, выходим, устанавливая флаг выхода End If Else dr = dr_r ' запоминаем и идем дальше End If End If Next End Sub критикуйте |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подстановка значений в таблицу по условию | mchip | Microsoft Office Access | 15 | 01.07.2008 09:54 |
Нахождение минимума и максимума в трехмерном массиве | 1234 | Помощь студентам | 11 | 26.05.2008 16:23 |
Нахождение суммы в массиве. PHP | Айвенго | Помощь студентам | 3 | 28.01.2008 19:46 |
нахождение суммы четных чисел в массиве | Ci_novice | Общие вопросы C/C++ | 1 | 23.12.2007 12:11 |
Нахождение двух одинаковых элементов в массиве | Stas))) | Помощь студентам | 4 | 01.06.2007 12:23 |