Помогите решить две задачи по Borland C++: 1) Вводится одномерный массив из n-элементов. подсчитать сумму элементов этого массива, заключенных между максимальным и минимальным элементом. Предполагается, что все элементы массива различны. Максимальный и минимальный элементы в сумму не входят. 2)Имеются два числа: 3 и 5. Требуется представить некоторую сумму большую или равную восьми, состоящую из этих цифр.
Буду очень признателен, если еще и комментарии напишите. Заранее благодарю)
ну к примеру если дано число 13, то программа должна вывести 5+5+3, ну и остальные варианты, если таковы имеются.
Добавлено (03.10.2014, 15:06) --------------------------------------------- вообще задача звучала так: есть пяти- и трех-рублевые монеты. требуется представить некоторую сумму большую или равную восьми, состоящую из этих чисел.(ну то есть разменять число на монеты по три и пять рублей)
karuy, она не выдаёт все результаты, например для 30 она не учтёт вариант 5*3 + 3*5. Ещё я бы убрал дублирование кода.
Добавлено (05.10.2014, 19:12) --------------------------------------------- В общем случае можно использовать рекурсию/стек для разложения числа на все слагаемые. Здесь можно написать такой код:
Код
void PrintCombinations(const int a, const int b, const int y) { for (int modulo = y; modulo >= 0; modulo -= a) { if (modulo % b == 0) { cout << a << "*" << (y - modulo) / a << " + " << b << "*" << modulo / b << endl; } } }
// Представление числа как сумма троек и пятёрок #include <iostream> using namespace std; // Описание функции void PrintCombinations(const int a, const int b, const int y);
int main() { int a = 5; int b = 3; int number = 300;
PrintCombinations(a, b, number);
return 0; } // Реализация функции void PrintCombinations(const int a, const int b, const int num) { if (a + b > num) return; for (int modulo = num; modulo >= 0; modulo -= a) { if (modulo % b == 0) { cout << a << "*" << (num - modulo) / a << " + " << b << "*" << modulo / b << endl; } } }
Сообщение отредактировал Lertmind - Понедельник, 06 Октября 2014, 19:50