Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 25.06.2008, 12:17   #1
azov
Пользователь
 
Регистрация: 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
azov вне форума
Старый 25.06.2008, 12:22   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

А где исходно находятся данные матрицы?
Если
Цитата:
Условие вводится вручную, как и данные в таблицу
, то куда их помещать? И еще: не устанешь вводить матрицу 5 Х 100 ?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 25.06.2008, 12:31   #3
azov
Пользователь
 
Регистрация: 25.06.2008
Сообщений: 11
По умолчанию

на листе Excel
azov вне форума
Старый 25.06.2008, 13:36   #4
ZORRO2005
Форумчанин
 
Аватар для ZORRO2005
 
Регистрация: 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
ZORRO2005 вне форума
Старый 25.06.2008, 14:33   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Уточните, что в Вашем примере означают a1, b1, c1 и т.д.
Другими словами, не понял, что значит
Цитата:
просуммировать каждое число с каждым по строкам
Пусть, например, в строке 1 имеются значения:
a b c d e
Значения каких сумм получать для последующего анализа в этой строке?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 25.06.2008, 15:05   #6
dsapa
Пользователь
 
Регистрация: 22.05.2008
Сообщений: 82
По умолчанию

SAS888, azov имеет ввиду ячейки A1, B1,C1, A2,B2.C2, A3,B3,C3.
И вот значения из этих ячеек нужно сложить в разных вариантах.
Приведен пример для матрицы 3х3. А хотелось бы общий вариант на VBA.
dsapa вне форума
Старый 25.06.2008, 15:13   #7
azov
Пользователь
 
Регистрация: 25.06.2008
Сообщений: 11
По умолчанию

a....e- произвольные положительные целые числа,которые вводятся в таблицу как исходные данные. Подсчет ведется по вышеприведенному алгоритму путем суммирования каждого числа первого столбца с перебором всех чисел в последующих. Для примера я привел перебор возможных значений в таблице3х3
azov вне форума
Старый 25.06.2008, 15:13   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

SAS888, ZORRO2005 - это снова сочетания. Перебираем все возможные сочетания элементов по столбцам т.е. в сочетании должно быть по одному элементу с каждого столбца. для каждого сочетания определяем сумму его элементов, там где квадрат разности суммы элементов и цели будет наименьшим - это сочетание и победило.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 25.06.2008, 15:16   #9
azov
Пользователь
 
Регистрация: 25.06.2008
Сообщений: 11
По умолчанию

Dsapa, вы, наверное, точнее изложили
azov вне форума
Старый 25.06.2008, 15:31   #10
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 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


критикуйте
slan вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подстановка значений в таблицу по условию 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