Палиндром

Задача: 

Определить, является ли строка палиндромом.

Палиндром – это число, слово или фраза, одинаково читающиеся в обоих направления.

Описание переменных: 

s – строка;
f – флаг.

Алгоритм решения задачи: 
  1. Брать очередной символ с начала строки и сравнивать его с противоположным.
    1. Если символы не равны, то выдать сообщение "не палиндром", изменить значение флага и остановить сравнение.
  2. Если значение флага не было изменено, то выдать сообщение "палиндром".
Программа на языке Паскаль: 

var
    s: string;
    i,f: byte;
begin
    write('String: ');
    readln(s);
    f := 0;
    for i := 1 to length(s) div 2 do
        if s[i] <> s[length(s)-i+1] then begin
            writeln('No palindrome');
            f := 1;
            break
        end;
    if f = 0 then
        write('Palindrome');
readln
end.

Комментарии

полиндром

Как написать рекурсивную функцию?

А как сделать, что бы

А как сделать, что бы проверка была не чувствительна к регистру?

Upcase в помощь

Upcase в помощь

Если в Pascal нет функции

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

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

if s[i] <> s[length(s)-i+1]

if s[i] <> s[length(s)-i+1] then begin
Почему lenght(s)-i+1, строка что из 3 символов состоит?

потому что математика...

потому что математика... Допустим у нас строка из 5-ти символов, первыми на надо сравнить 1-й и 5-й элементы, в таком случае і=1, рассчитываем какой элементы будем с ним сравнивать: 5-і+1=5-1+1=5, получаем то что нам нужно.

палиндром для чисел

var
    n, m, p: word;
 
begin
    write('Enter number: ');
    readln(n);
 
    m := n;
    p := 0;
    while m > 0 do begin
        p := p * 10 + m mod 10;
        m := m div 10;
    end;
 
    if n = p then
        writeln('Palindrome')
    else
        writeln('Not palindrome');
 
readln;
end.

полиндромы

всё работает прекрасно!