0 / 0 / 0
Регистрация: 08.03.2019
Сообщений: 25
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Генерация всех перестановок09.03.2019, 13:46. Показов 743. Ответов 6
Метки abc pascal (Все метки)
Здравствуйте. Наткнулся на программу генерацию всех перестановок, и есть 2 момента, которые не могу понять. Объясните, пожалуйста.
1) Зачем нужно эта строка в гланой программе?
Было RGB, поменяется на RBG, наша строка возвращает RGB. Но также я не могу понять другой ее момент:
0
|
09.03.2019, 13:46 | |
Ответы с готовыми решениями:
6
Генерация и запись всевозможных перестановок Разработайте алгоритм для вывода всех возможных перестановок символов в строке Генерация всех перестановок элементов множества Генерация перестановок |
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
|
|
09.03.2019, 14:59 | 2 |
Чтобы заполнить начальную расстановку: 1 2 3.
Тупо меняет два элемента массива… Её можно заменить на один оператор Swap(a[L],a[i]);
1
|
0 / 0 / 0
Регистрация: 08.03.2019
Сообщений: 25
|
|||||||||||
09.03.2019, 15:28 [ТС] | 3 | ||||||||||
JuriiMW, Получается, сначала печатает:
1) red, green, blue А потом меняет на: 2) red, blue, green Здесь в выводе можно увидеть, что программа возвращает первоначальную строку(1):
green, red, blue
0
|
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
|
||||||||||||||||
09.03.2019, 15:47 | 4 | |||||||||||||||
Я ни чего не могу увидеть, т.к. ваша программа загажена всякими лишними выводами!
Убирайте все и пользуйтесь отладчиком:
Добавлено через 5 минут Ну и зачем здесь этот промежуточный „костыль“ fig—a? И не нужен лишний параметр процедуры!
О! Да! Ещё константа… Не нужна константа:
0
|
0 / 0 / 0
Регистрация: 08.03.2019
Сообщений: 25
|
||||||
09.03.2019, 15:59 [ТС] | 5 | |||||
JuriiMW, лишние выводы мне былы нужны из-за того, что было непонятно, как рекурсивная процедура выполняется...
0
|
2309 / 1420 / 516
Регистрация: 07.04.2017
Сообщений: 4,723
|
|
09.03.2019, 16:41 | 6 |
Я так понимаю вы про отладку...
В отладке есть 3 способа выполнить программу немного дальше и снова поставить на паузу: 1. Поставить точку останова (тыкните слева, появится красный кружочек) и нажать F9. Программа будет выполнятся пока не дойдёт до первой точки останова. 2. Нажать F7. Если сейчас отладка стоит на вызове подпрограммы - она перейдёт внутрь этого вызова. Если нет - перейдёт на следующую строчку. 3. Нажать F8. В отличии от F7, F8 не попытается перейти внутрь вызова подпрограммы, а всегда только перейдёт на следующую строчку.
1
|
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
|
||||||
09.03.2019, 17:04 | 7 | |||||
Не „не попытается“, а „не будет входить“…
Но с оговоркой! Скажем, если внутри подпрограммы будет точка останова, то программа прервётся внутри подпрограммы. Т.е., если поставить в последней программе точку останова на шестой строке
0
|
09.03.2019, 17:04 | |
09.03.2019, 17:04 | |
Помогаю со студенческими работами здесь
7
Процедура печати всех перестановок из n символов - перевод с C++ Схема алгоритма получения (печати) всех перестановок из n чисел Дано n различных натуральных чисел. Написать функцию нахождения всех перестановок этих чисел. Генерация всех подмножеств заданного n-элементного множества Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |