Есть у кого контакты ИТМО, Кафедра программной инженерии |
Здравствуйте, гость ( Вход | Регистрация )
Есть у кого контакты ИТМО, Кафедра программной инженерии |
10.2.2018, 11:27
Сообщение
#1
|
|
Живу дома |
У дочки сложности в коммуникации с преподавателем, понятно, что сама запустила ... но при сдаче программы, не может ответить на один и тот-же вопрос, причем получает ответ "нет" на раз! с предложением подумать и прийти через неделю (а вариантов ответа много, не понятно, что он хочет услышать). Сама боится уже подходить к нему. У ребенка депрессия, два дня не ест.
Сам уже с ней сидел, все понимает... Всегда училась самостоятельно, а тут тупик (хвост один!). От нашей помощи дочка отказывается... |
|
|
10.2.2018, 15:07
Сообщение
#2
|
|
Живу дома |
Программирование: Найти количество расположений числа на слагаемые.
Рекурсивная функция. Вопрос - что такое "n - max" (выделено в программе). Дело в том, что ответов там от параметра функции до контекстного значения числа, которое надо разложить в текущем вызове и т.п. варианты как и сумма сумм = разнице исходного числа и максимального в текущих слагаемых... Суть проблемы: Осталось человек 10-15 не сдавших, а те кто сдал на данный вопрос не отвечал... Программа эталонная, в тырнете много ее. Я ее понимаю, дочка понимает. Прошли в дебагере с объяснением от нее что-как - я вижу, что она понимает. Но при очередной сдаче, на вопрос - что это? она говорит разные варианты, но в ответ - жестко нет! без комментариев. У меня подозрение, что это ее скромность (зажатость, неуверенность) и его неверие в ее способности и подозрение, что списала. Все остальные предметы она сдала нормально. // Функция выводит количество разложений числа на слагаемые. // Параметры: натуральное число, максимальное слагаемое. // Результат: количество разложений. int razlozheniye(int n, int max) { if (n == 1 || max == 1) // условие выхода из рекурсии return 1; if (n <= max) return razlozheniye(n, n - 1) + 1; // есть 1 разбиение, max=n (само число) // другие разбиения имеют слагаемые, не больше n-1, т.е. самого числа return razlozheniye(n, max - 1) + razlozheniye(n - max, max); // разобьем все разложения числа n на сумму слогаемых не больше n, можно разделить на 2 непересекающиеся группы: // первая группа - сумма не содержит max в количестве максимальных слогаемых // вторая группа содержит слогаемое max } // Основная программа. int main() { int numb, // введеное число с клавиатуры max, // максимальное слогаемое k, // количество разложений числа на слогаемые i; i = scanf_s("%d", &numb); if (numb<0) // если ненатуральное число, вывод ошибки printf("Ошибка!"); else { max = numb; k = razlozheniye(numb, max); printf("Количество разложений: %i", k); i = scanf_s("%d", &numb); } return 0; } |
|
|
Текстовая версия | Сейчас: 24.5.2024, 18:06 |