Формулировка. Дано натуральное число n. Проверить, представляет ли собой палиндром его десятичная запись.
Решение. Задача является общим случаем задачи 9. Чтобы решить ее, необходимо разделить число n на две половины одинаковой длины, отбросить серединную цифру в случае нечетной длины n и проверить равенство одной из частей реверсной записи другой части.
Так как нам заранее неизвестна десятичная разрядность n, мы можем посчитать ее с помощью следующего цикла (подробнее это описывалось в предыдущей задаче):
while a <> 0 do begin
Теперь рассмотрим варианты проверки числа на палиндром вместе с разбором на примере.
Пусть дано число нечетной длины, например, 79597. Мы можем отделить его правую половину 97, проведя ряд последовательных делений с взятием остатка в цикле из digits div 2 повторений. При этом необходимо сразу сформировать ее реверс в переменную right (мы делали это в задаче 31):
for i := 1 to digits div 2 do begin
right := right * 10;
Информатика 8 класс. Задание 6,7 стр 134
right := right + n mod 10;
Так как число нечетно, нужно отбросить его центральную цифру 5, после чего в переменной n (равной 79) будет содержаться левая половина числа, а в переменной right (также равной 79) – его перевернутая правая половина. Они равны, следовательно, ответ положительный.
Тот же порядок действий применяется и для чисел четной длины, однако теперь нам не нужно ничего отбрасывать после накопления реверсной левой части числа в переменную right, так как в числах четной длины нет серединной цифры. Например, дано число 1551: переворачиваем правую половину числа 51 (получим 15) и сравниваем ее с левой половиной: 15 = 15, ответ положительный.
Эти допущения говорят о том, что необходима проверка длины числа n на нечетность и, соответственно, отбрасывание серединной цифры в случае нечетности:
if odd(digits) then n := n div 10;
Код:
- program CheckPalindrome;
- var
- n, a, right: longint;
- digits, i: byte;
- begin
- readln(n);
- a := n;
- digits := 0;
- while a <> 0 do begin
- a := a div 10;
- inc(digits)
- end;
- right := 0;
- for i := 1 to digits div 2 do begin
- right := right * 10;
- right := right + n mod 10;
- n := n div 10
- end;
- if odd(digits) then n := n div 10;
- writeln(n = right)
- end.
Выполним «ручную прокрутку» алгоритма на числе 147741:
1) Считаем длину числа, она равна 6 (строки 11-14);
2) В цикле из 6 div 2 = 3 повторений прибавляем к right (формируя реверсную запись) последние три цифры числаn, после чего отбрасываем их и имеем в n 147, в right 147 (строки 16-20);
3) Так как odd(digits) = odd(6) = false, ничего не делаем (строка 21);
4) Выводим на экран значение выражения n = right – ответ положительный (строка 22).
Источник: pascalzadachi.ru
Математические операции для поиска палиндрома
Палиндром в Pascal. Как его найти?
В этой публикации мы разберем программу, которая определяет, является ли число, введенное пользователем палиндромом.
Палиндром — это число, слово, текст, которые читаются одинаково в обоих направлениях. Вот пару примеров:
- 1221
- Шалаш
- Топот
- А роза упала на лапу Азора
- 404
Сегодняшняя программа будет находить числа — палиндромы. Разумеется, программу можно модифицировать под то, чтобы она находила так же и слова и даже текст, но это уже усложненные модификации.
В конце будет ссылка на скачивание кода программы.
Поэтому поехали!
1. Типы данных
Определим типы данных
В этой программе возьмем тип longint вместо обычного integer . Сделано это по причине того, что пользователь может ввести палиндром, состоящий из очень большого числа цифр.
Num — наше введенное число
A, B, C — вспомогательные переменные для определения, относится ли число к палиндромам.
Источник: dzen.ru
Дано натуральное число. Определить является ли оно палиндромом. Написать процедуру получения нового числа. Паскаль
Найди верный ответ на вопрос ✅ «Дано натуральное число. Определить является ли оно палиндромом. Написать процедуру получения нового числа. Паскаль . » по предмету Информатика, а если ответа нет или никто не дал верного ответа, то воспользуйся поиском и попробуй найти ответ среди похожих вопросов.
Новые вопросы по информатике
Сколько всего различных символов может быть в восьмибитной текстовой кодировке? 1) 8 2) 512 3) 256 4) 65536
Паскаль. Написать программу подсчета количества отрицательных чисел среди любых 10 вводимых. 1 программа с использованием while, 2 программа — repeat
Сколько кб информации содержит сообщение объемом 2^20 бит?
Информатика пользователь создад сообщение из 256 символов в кодировке Unicode в которой каждый символ кодируется 16 битами после редактирования информационный объем сообщения составил 3072 бит Определите сколько символов удалили сообщение если его
Запишите числа в беззнаковом коде (формат 1 байт): а) 31; б) 163; в) 65; г) 128.
Главная » Информатика » Дано натуральное число. Определить является ли оно палиндромом. Написать процедуру получения нового числа. Паскаль
Источник: urokam.net