Другие языки программирования и технологии
напр 1+4 и 4+1 это одна комбинация или разные ?
повторы допускаются :1+1+1+2 ?
можно ли использовать 0: 0+5 ?
Excel vba макросы
Задание: нужно написать код с помощью макросов так,чтобы он мог расчитать разложение числа на слагаемые. То есть например для числа 5 будет 6 комбинаций и он должен выдать мне все эти 6 комбинаций. Пожалуйста помогите!
например для числа 5 будет 6 комбинацийчто вы называете комбинацией
напр 1+4 и 4+1 это одна комбинация или разные ?
повторы допускаются :1+1+1+2 ?
можно ли использовать 0: 0+5 ?
напиши все 6 комбинаций которые нужно получить макросом
как-то так.. адаптировано с 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
/*
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
Пётр Клыжко
сейчас протестирую
Пётр Клыжко
не запускаeтся даже
Нужно обратиться к Биллу Гейтсу.
В РФ никто не пишет на VBA.
В РФ никто не пишет на VBA.
Пётр Клыжко
Требование преподавателя, мне тоже было бы легче сделать это на с++ том же самом, но преподу нужно именно с макросами.
Александр Григорьев
Напиши на си, задай вопрос, прикрепи код, знатоки переведут на бэйсик
Похожие вопросы
- Макрос для excel - VBA (гиперссылка)
- Вопрос по vba макросам в excel(внутри).
- VBA - Парсинг в Excel-VBA курса ЦБ
- Программирование в Excel - VBA
- Microsoft Excel VBA
- Необходимо создать макрос для excel
- Excel. Макрос. Найти в Листе1 значение активной ячейки из Листа2.
- Вопрос по макросам MS Excel
- помогите с vba excel
- VBA EXCEL. Где найти список формул по английски??? чтоб потом вписывать формулы через VBA.
1+1+1+2
1+1+3
1+4
2+3
А 6-ая комбинация какая ?