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

0 голосов

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


спросил от (15 баллов) в категории Информатика
1 Ответ
0 голосов
ответил от Архангел (142k баллов)
 
Лучший ответ

// 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

оставил комментарий от (15 баллов)

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

оставил комментарий от Архангел (142k баллов)

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

оставил комментарий от Архангел (142k баллов)

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

оставил комментарий от (15 баллов)

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

оставил комментарий от Архангел (142k баллов)

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

оставил комментарий от Архангел (142k баллов)

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

оставил комментарий от Архангел (142k баллов)

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

оставил комментарий от (15 баллов)

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

оставил комментарий от Архангел (142k баллов)

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

...