Дано число является ли оно палиндромом в Pascal. Если можно с объяснением каждого шага.

0 голосов

Дано число является ли оно палиндромом в Pascal. Если можно с объяснением каждого шага.


спросил от Начинающий (263 баллов) в категории Информатика
2 Ответы
0 голосов
ответил от Супер Кандидат Наук (38.6k баллов)
 
Лучший ответ

//Pascal ABC.NET Версия 2.2 Сборка 790
var s:string;
i,s1:integer;
begin;
readln(s1);  //вводим число
str(s1,s);
for i:=1 to length(s) div 2+length(s) mod 2 do
{цикл от начала и до середины/центра в зависимости от чётности}
begin;
   if s[i]<>s[length(s)+1-i] then
{если 1 символ не равен последнему, второй-предпоследнему и т.д.}
   begin;
        writeln('Не палиндром');
        exit; //если это условие хоть раз верно-программа завершается
   end;
end;
writeln('Палиндром'); //если условие не разу не оказалось верным
end.

Пример ввода:
121
Пример вывода:
Палиндром

оставил комментарий от Отличник (5.1k баллов)

Между "дано число" и "дана строка цифр" есть разница... Вы не находите?

оставил комментарий от Супер Кандидат Наук (38.6k баллов)

В данном случае и данном задании, не нахожу.

оставил комментарий от Отличник (5.1k баллов)

А если это задача часть большой задачи по расчёту значений целочисленного массива, в котором и нужно определить палиндромы? В условии чётко указано - дано число, а не строка.

оставил комментарий от Супер Кандидат Наук (38.6k баллов)

После "а если" обычно начинаются знатные дискуссии в комментариях. Если Вы так жаждите ввода числа, используйте inttostr().

оставил комментарий от Отличник (5.1k баллов)

ну тут возникает еще одно 'если', указанная Вами функция присуща не всем диалектам языка Паскаль... в отличии от функции STR

оставил комментарий от Супер Кандидат Наук (38.6k баллов)

Наслаждайтесь val()

оставил комментарий от Отличник (5.1k баллов)

)) это обратное преобразование VAL тут не нужен

оставил комментарий от Отличник (5.1k баллов)

Я понимаю, что Ваш метод может быть в итоге не принципиален в рамках конкретной задачи.... но я за то, чтобы решать именно в рамках поставленных условий.

оставил комментарий от Супер Кандидат Наук (38.6k баллов)

Думаю, вопрос исчерпан. Останемся при своих мнениях и завершим.

0 голосов
ответил от Отличник (5.1k баллов)
оставил комментарий от Начинающий (263 баллов)
оставил комментарий от Начинающий (263 баллов)

можно подробно объяснить

оставил комментарий от Отличник (5.1k баллов)

в этом куске кода ищется порядок (сотня, тысяча и т.п.), соответствующий заданному числу и используется для получения его первой цифры. Например для 1234 порядком будет 1000 - целочисленно поделив 1234 на 1000 - получим его первую цифру "1". А дальше идёт рекурсивный способ проверки равенства первой и последней цифры.

...