Помощь - Поиск - Пользователи - Календарь
Полная версия: Процедура на проверку полиндром
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
spektr
Задача: Построить процедуру проверки является ли число полиндромом (читается одинаково справа и слева).
Вопроы: Я чесно юзала поиск и поняла что это надо делать через строку,но когда села писать вот что затрудняет.
1.начинаем считать с i:=1 а заканчиваем чем longht(s) div 2? а если число нечетное?
2.Ну ладно сошлись значения i = longth(s)+1-i ,а что эже дальше их надо где-то обособленно сохранять или как?
И вобще в мозге все оказалось проще чем в паскале,как это все загнать под один код непонимаю.Обычно выкладываю увеченый код,сейчас не буду,т.к. совсем все плохо(((((((
klem4
Замечательные числа

Цитата
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!


Tan
если число нечётное "центральный" символ не тронут, это же див 2.
spektr
посмотрела замечательные числа,непоняла что есть что?и для чего мы это делаем?
klem4
Цитата
непоняла что есть что


А что не понятно ? Там есть ф-я, которая возвращает TRUE, если число X - полиндром

function is_palindrom(x: longint): boolean;


Или тебе не понятен алгоритм реализованый там ?
spektr
дя, я не поняла за счет чего так получается.Объяснишь?
volvo
Собираем из числа его перевертыш: Вот смотри:

Допустим, 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... Замечаешь? Число переворачивается smile.gif Когда будут обработаны все цифры, оно будет перевернуто полностью...
spektr
Все ясно и в последствии просто сравниваем число и перевертыш,это ясно,но вот вопрос там сделано функцией и следовательно хотя вобшем число REAL,мы пишем за скобкой,Boolean,а у меня процедура куда там вставить булин?
Tan
У процедуры нету результрующего типа => ничего не надо за скобкой, можешь сделать глобальную переменную и ей присвоить значение boolean, либо обратиться через параметр, но перед ним var, чтобы он был виден в основной программе.
volvo
Меня всегда поражала логика преподавателей, заставляющих проверку чего-либо (то есть заведомо необходимо получить результат, хотя-бы Да/Нет) делать процедурой, несмотря на то, что чем меньше глобальных переменных в программе, тем легче ее отладить... Смысл сего действия от меня просто скрыт...

spektr
По теме: наверное, лучше все-таки вернуть результат через Var-параметр...
spektr
Не буду его осуждать так как он просто хочет научить нас азам, а не тому как сделать проще и логичней хотя ме бы это не помешало,про задачу все поняла спасибо всем)))) respect.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.