рекурсия, Определить число, получаемое выписыванием в обратном порядке цифр зада |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
рекурсия, Определить число, получаемое выписыванием в обратном порядке цифр зада |
marwell |
Сообщение
#1
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
Определить число, получаемое выписыванием в обратном порядке цифр заданного натурального числа (использовать рекурсивную функцию). Ничего не приходит в голову Кто-нибудь, дайте пожалуйста направление(код постараюсь написать сам)
|
Lapp |
Сообщение
#21
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
На какие такие? Я не делаю ничего запрещенного, Я все это понимаю, потому я и выразился туманно .Способ, конечно, аппетитный. Чтобы корректно обрабатывать внутренние нули мне пришлось оценивать порядок частного, вводить дополнительный цикл - а тут все уитывается на автомате. Вроде действительно должно работать.. Я наблюдал ошибку на ноутбуке, а тут (на домашнем компе) не могу воспроизвести. Завтра попробую еще на ноуте. Не исключено, что я что-то путаю. Значения были 12345 и 67890, кажется. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Lapp |
Сообщение
#22
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
наблюдал ошибку на ноутбуке, а тут (на домашнем компе) не могу воспроизвести. Завтра попробую еще на ноуте. Сейчас пытался снова получить ошибку на ноуте (FPC 2.2.4, Vista 32) - не выходит. Сильно подозреваю, что это я накосячил. К сожалению, то окно я закрыл, и псомотреть нет возможности. С извинениями беру свои слова обратно )).Не исключено, что я что-то путаю. На всяк случай спрошу: marwell, а ты можешь привести точный вариант проги, где у тебя получаются нули? Спасибо. Я никогда не использовал статическую переменную через константу в процедуре. Может, оно и лучше, поскольку она получается объявленной прямо тут, а не где-то там. Но все же смысл ее как и у глобальной. И это значит, в частности, что нельзя вызывать такую процедуру параллельно.. Но если это не подразумевается, то все ОК. Запомним это )), спасибо. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
Сообщение
#23
|
Гость |
Цитата а ты можешь привести точный вариант проги, где у тебя получаются нули? Нули получаются при запуске программы из 9-го поста (без добавленного позже разбиения на 2 этапа) под Турбо-Паскалем. Причины, кстати, я до сих пор не понимаю, Не хочет вычислять выражение, заданное вот так:r := r(x div 10) + b * (x mod 10); b := 10 * b; А если поменять слагаемые местами: r := b * (x mod 10) + r(x div 10); b := 10 * b; , то все становится прекрасно и удивительно - теперь Дедушка Турбо соизволил посчитать выражение правильно. Но тогда FPC напрочь отказывается возвращать правильный результат Замкнутый круг какой-то... С чем это может быть связано - не знаю. Скорее всего что-то связанное с Порядком вычисления выражений. Так что лучше, действительно, разбить выражение на 2 части, используя промежуточную переменную (см. пост №18) |
Текстовая версия | 18.05.2024 4:13 |