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

0 голосов
122 просмотров

Определить сколько слов в строке является палиндромом (читаются одинаково как слева направо, так и справа налево). В основной программе написать подпрограмму, определяющую является ли слово палиндромом.


Информатика (15 баллов) | 122 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
function IsPalindrom(w:string):=(w.Length>1?w=ReverseString(w):False);

begin
  var s:=ReadlnString('>');
  Writeln('Палиндромов: ',s.ToWords.Where(w->IsPalindrom(w)).Count)
end.

Тестовое решение
> мадам ваш заказ уже несут - слышу топот официанта
Палиндромов: 3

(142k баллов)
0

Спасибо) а можно как-то поподробнее расписать код?

0

Функция IsPalindrom(w) принимает в качестве параметра строку и возвращает True, если строка является палиндромом и False в противном случае. Теперь основная программа. Первый оператор запрашивает ввод символьной строки и помещает её в переменную s.

0

Второй делает всё остальное: выводит текст "Палиндромов: ', а затем для строки s запускает цепочку методов, которая последовательно разбивает текст на слова, для каждого слова через вызов функции IsPalindrom определяет, является ли оно палиндромом и возвращает количество таких слов, которое затем выводится.

0

а что входит в цепочку методов?

0

.ToWords.Where(w->IsPalindrom(w)).Count - тут три метода и каждый отделяется точкой, образуя цепочку. ToWords, Where, Count - вот они.

0

Результат работы ("выход") каждого метода слева направо передается на "вход" следующему.

0

Назначения всех методов описаны в справочной системе PascalABC.NET 3.1

0

большое спасибо)

0

Тут для "спасибо есть кнопочка))) Чтобы не писать))