Процедура на проверку полиндром |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Процедура на проверку полиндром |
spektr |
Сообщение
#1
|
Пилотус Группа: Пользователи Сообщений: 101 Пол: Женский Реальное имя: Настасья Репутация: 2 |
Задача: Построить процедуру проверки является ли число полиндромом (читается одинаково справа и слева).
Вопроы: Я чесно юзала поиск и поняла что это надо делать через строку,но когда села писать вот что затрудняет. 1.начинаем считать с i:=1 а заканчиваем чем longht(s) div 2? а если число нечетное? 2.Ну ладно сошлись значения i = longth(s)+1-i ,а что эже дальше их надо где-то обособленно сохранять или как? И вобще в мозге все оказалось проще чем в паскале,как это все загнать под один код непонимаю.Обычно выкладываю увеченый код,сейчас не буду,т.к. совсем все плохо((((((( |
klem4 |
Сообщение
#2
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Замечательные числа
Цитата 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Tan |
Сообщение
#3
|
Профи Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: 10 |
если число нечётное "центральный" символ не тронут, это же див 2.
Сообщение отредактировано: Tan - -------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
spektr |
Сообщение
#4
|
Пилотус Группа: Пользователи Сообщений: 101 Пол: Женский Реальное имя: Настасья Репутация: 2 |
посмотрела замечательные числа,непоняла что есть что?и для чего мы это делаем?
|
klem4 |
Сообщение
#5
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Цитата непоняла что есть что А что не понятно ? Там есть ф-я, которая возвращает TRUE, если число X - полиндром function is_palindrom(x: longint): boolean; Или тебе не понятен алгоритм реализованый там ? -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
spektr |
Сообщение
#6
|
Пилотус Группа: Пользователи Сообщений: 101 Пол: Женский Реальное имя: Настасья Репутация: 2 |
дя, я не поняла за счет чего так получается.Объяснишь?
|
volvo |
Сообщение
#7
|
Гость |
Собираем из числа его перевертыш: Вот смотри:
Допустим, X = 123... Тогда (X mod 10) - это его последняя цифра, ибо работаем мы в 10-ной системе счисления - равна 3... Значит, T = 3, поскольку изначально значению перевертыша присвоен 0... Теперь: мы уже учли эту тройку в перевертыше, но она еще есть и в самом числе, надо его поделить нацело на 10, чтобы избавиться от последней цифры... Делаем это (x := x div 10), получаем X = 12 и T = 3... Дальше опять берем последнюю цифру числа, т.к. условие окончания цикла еще не достигнуто, число не равно 0... Теперь это двойка... Умножая перевертыш на 10, и прибавляя 2 имеем: T = 30 + 2 = 32, опять избавляемся от последней цифры числа делением на 10... Замечаешь? Число переворачивается Когда будут обработаны все цифры, оно будет перевернуто полностью... Сообщение отредактировано: volvo - |
spektr |
Сообщение
#8
|
Пилотус Группа: Пользователи Сообщений: 101 Пол: Женский Реальное имя: Настасья Репутация: 2 |
Все ясно и в последствии просто сравниваем число и перевертыш,это ясно,но вот вопрос там сделано функцией и следовательно хотя вобшем число REAL,мы пишем за скобкой,Boolean,а у меня процедура куда там вставить булин?
|
Tan |
Сообщение
#9
|
Профи Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: 10 |
У процедуры нету результрующего типа => ничего не надо за скобкой, можешь сделать глобальную переменную и ей присвоить значение boolean, либо обратиться через параметр, но перед ним var, чтобы он был виден в основной программе.
Сообщение отредактировано: Tan - -------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
volvo |
Сообщение
#10
|
Гость |
Меня всегда поражала логика преподавателей, заставляющих проверку чего-либо (то есть заведомо необходимо получить результат, хотя-бы Да/Нет) делать процедурой, несмотря на то, что чем меньше глобальных переменных в программе, тем легче ее отладить... Смысл сего действия от меня просто скрыт...
spektr По теме: наверное, лучше все-таки вернуть результат через Var-параметр... |
spektr |
Сообщение
#11
|
Пилотус Группа: Пользователи Сообщений: 101 Пол: Женский Реальное имя: Настасья Репутация: 2 |
Не буду его осуждать так как он просто хочет научить нас азам, а не тому как сделать проще и логичней хотя ме бы это не помешало,про задачу все поняла спасибо всем))))
|
Текстовая версия | 23.12.2024 19:57 |