рекурсия, Определить число, получаемое выписыванием в обратном порядке цифр зада |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
рекурсия, Определить число, получаемое выписыванием в обратном порядке цифр зада |
marwell |
2.04.2010 16:18
Сообщение
#1
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
Определить число, получаемое выписыванием в обратном порядке цифр заданного натурального числа (использовать рекурсивную функцию). Ничего не приходит в голову Кто-нибудь, дайте пожалуйста направление(код постараюсь написать сам)
|
Client |
2.04.2010 16:21
Сообщение
#2
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
брать остатока от деления на 10, делай с ним что надо, и дели число на 10. Так пока число не будет равно 0.
|
marwell |
2.04.2010 16:23
Сообщение
#3
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
|
marwell |
2.04.2010 16:48
Сообщение
#4
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
черт, даже не знаю, как это можно написать с рекурсией ведь после операции mod 10 мы потеряем все остальные числа
|
volvo |
2.04.2010 17:04
Сообщение
#5
|
Гость |
Цитата ведь после операции mod 10 мы потеряем все остальные числа Ничего не потеряем:procedure rec(x: longint); |
marwell |
2.04.2010 17:21
Сообщение
#6
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
спасибо!
|
marwell |
2.04.2010 21:30
Сообщение
#7
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
а реально ли сделать это через функцию, а не процедуру?
|
Client |
2.04.2010 22:12
Сообщение
#8
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
пол часа мучений стоили этого
скорей всего можно и по другому. вот что получилось uses crt; |
volvo |
2.04.2010 23:13
Сообщение
#9
|
Гость |
Цитата скорей всего можно и по другому. Можно конечно... Заметь, без побочных эффектов. Старайся вообще обходиться без них. А уж об использовании глобальных переменных я вообще не хочу вспоминать function r(x: longint): longint; |
marwell |
3.04.2010 3:59
Сообщение
#10
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
спасибо огроменное
|
marwell |
3.04.2010 9:23
Сообщение
#11
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
Можно конечно... Заметь, без побочных эффектов. Старайся вообще обходиться без них. А уж об использовании глобальных переменных я вообще не хочу вспоминать function r(x: longint): longint; const b: longint = 0;а разве можно константе b=0 присвоить значение b:=1? |
Lapp |
3.04.2010 9:32
Сообщение
#12
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
а разве можно константе b=0 присвоить значение b:=1? Типизированной константе - можно. По сути, это просто инициализированные переменные. Неудачное название им дали в Борланде..-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
marwell |
3.04.2010 9:38
Сообщение
#13
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
программа выдает только нули
|
Lapp |
3.04.2010 10:43
Сообщение
#14
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
программа выдает только нули Попробуй вот так: function r(x: longint): longint; Тут наверняка наворочено больше, чем нужно, и не очень красиво )).. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Client |
3.04.2010 10:55
Сообщение
#15
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
хм, а собственно где нули получаются? при каких данных?
|
marwell |
3.04.2010 10:57
Сообщение
#16
|
Бывалый Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: 1 |
|
Client |
3.04.2010 11:05
Сообщение
#17
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
volvo есть над чем подумать
Добавлено через 2 мин. код volvo рабочий. Что не так? Эскизы прикрепленных изображений |
volvo |
3.04.2010 11:50
Сообщение
#18
|
Гость |
Цитата(Client) Что не так? Не так работает под Турбо-Паскалем, надо разбивать вычисление выражения на 2 этапа:function r(x: longint): longint;Вот теперь будет работать одинаково под любым компилятором. |
Lapp |
3.04.2010 12:17
Сообщение
#19
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Не так работает под Турбо-Паскалем У меня не каждый раз срабатывала под FPC.. Сейчас воспроизвести не могу.Не знаю, стоит ли полагаться на такие вещи.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
3.04.2010 13:10
Сообщение
#20
|
Гость |
Цитата стоит ли полагаться на такие вещи.. На какие такие? Я не делаю ничего запрещенного, заметь, сначала - рекурсивный вызов, потом - использование значения b. То есть, никогда не будет использовано неинициализированное тобой значение b. Чтобы оно начало использоваться - рекурсия должна дойти до конца (x = 0), но тогда b уже станет равно 1. Опять же, "типизированная константа" = "статическая переменная", она описывается в сегменте данных (а не в стеке, как обычная переменная), и поэтому сохраняет свое значение не только между вызовами простых функций, но и между вызовами рекурсивных тоже, так что и с этой стороны подвохов быть не может. Так что это вполне приемлемая конструкция.Цитата У меня не каждый раз срабатывала под FPC Если еще у кого-то будут неправильные срабатывания - отпишитесь здесь, интересно, на каких значениях это происходит. Чему разно изначальное число, и что возвращает функция. Единственный вариант, который приходит в голову - это когда "перевернутое" число не влезет в LongInt (например, 1234567899), но тут уж ничего не поделаешь. |
Текстовая версия | 28.05.2024 17:58 |