Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Excel vba макросы

даниил мисинев Профи (695), закрыт 1 год назад
Задание: нужно написать код с помощью макросов так,чтобы он мог расчитать разложение числа на слагаемые. То есть например для числа 5 будет 6 комбинаций и он должен выдать мне все эти 6 комбинаций. Пожалуйста помогите!
Лучший ответ
Sima . Мастер (1191) 1 год назад
например для числа 5 будет 6 комбинаций
что вы называете комбинацией
напр 1+4 и 4+1 это одна комбинация или разные ?
повторы допускаются :1+1+1+2 ?
можно ли использовать 0: 0+5 ?
даниил мисиневПрофи (695) 1 год назад
без повторов, только разные комбинации
даниил мисинев Профи (695) даниил мисинев, помечу,1+1+1+2 - верный вариант,такое должно быть,0+5 смысла не имеет,поэтому нет,1+4 и 4+1 считается как одна и та же комбинация поэтому ее не нужно
Sima .Мастер (1191) 1 год назад
для числа 5 будет 6 комбинаций
1+1+1+1+1
1+1+1+2
1+1+3
1+4
2+3
А 6-ая комбинация какая ?
Остальные ответы
Дурацкие Вопросы Профи (904) 1 год назад
Нужно обратиться к Биллу Гейтсу.
В РФ никто не пишет на VBA.
даниил мисиневПрофи (695) 1 год назад
Требование преподавателя, мне тоже было бы легче сделать это на с++ том же самом, но преподу нужно именно с макросами.
pvamПросветленный (23848) 1 год назад
Напиши на си, задай вопрос, прикрепи код, знатоки переведут на бэйсик
Илья Аганичев Мудрец (13244) 1 год назад
как-то так.. адаптировано с http://acm.mipt.ru/twiki/bin/view/Curriculum/FIVTLecturesTerm1Lecture6
/*
n - осталось набрать слагаемых на сумму n
k - слагаемые не больше k
i - номер очередного слагаемого

В массиве a, начиная с i-го элемента, перебрать все возможные
варианты разложения числа n на слагаемые, не превосходящие k.
*/
function dec(n, k, i) {
if n < 0
exit function
if n = 0
// Просьба разложить 0 означает, что раскладывать уже нечего и
// и уже нет остаточного значения, котрое нужно разложить.
// Значит в массиве {a[0], a[1], ... a[i-1]} находится некоторое готовое разложение
// исходного числа n = m.
dim j as integer
for j = 0 to i-1
dec=dec & a[j]
next
dec=dec & vbCrLf

else
if n - k >= 0
a[i] = k; // фиксируем i-ое слагаемое
dec(n - k, k, i + 1);
end if

if ( k - 1 > 0)
dec(n, k - 1, i);
end if
end if
end function

sub main() {
dim a()
m=Input("Введите число");
redim a(m)
for i = 0 to i -1
a[i] = 0;
next
msgbox("Варианты суммирования для числа "+cstr(m)+": "+dec(m, m, 0))

end sub
даниил мисиневПрофи (695) 1 год назад
сейчас протестирую
даниил мисиневПрофи (695) 1 год назад
не запускаeтся даже
FreedomS Просветленный (41448) 1 год назад
напиши все 6 комбинаций которые нужно получить макросом
Похожие вопросы