Предмет: Информатика,
автор: alina123909
Помогите написать программу в Паскале Строки 1. Дана последовательность, содержащая до 5 слов, в каждом из которых до 5 строчных латинских букв; между соседними словами — не менее одного пробела, за последним словом — точка. Напечатать все слова последовательности, предварительно преобразовав каждое из них по следующему правилу: 1) перенести первую букву в конец слова; 2) если слово нечетной длины, то удалить его среднюю букву.
Ответы
Автор ответа:
0
// PascalABC.NET 3.6.3
function Cnv(s: string): string;
begin
var n := s.Length;
if s[n] = '.' then begin
s := s[:n];
Dec(n)
end;
if n <= 1 then Result := s
else
begin
if n.IsOdd then begin
s := s[:n div 2 + 1] + s[n div 2 + 2:];
Dec(n)
end;
Result := s[n] + s[2:n] + s[1]
end
end;
begin
var a := ReadString.ToWords;
a.Select(s -> Cnv(s)).Print
end.
LRSM:
По условию задания, слова необходимо преобразовать, а не спроецировать. Также в задании сказано "перенести первую букву в конец слова" и "если слово нечетной длины, то удалить его среднюю букву". О переносе последней буквы в начало слова не идёт никакой речи.
Автор ответа:
0
PascalABC.NET
Ответ:
- begin
- var a := ReadString[:^1].ToWords;
- a.Transform(x -> x.Length.IsEven ? x?[2:]+x[1] : x?[2:x.Length div 2 + 1]+x?[x.Length div 2 + 2:]+x[1]);
- a.Print
- end.
Пример работы:
Приложения:
Похожие вопросы
Предмет: Русский язык,
автор: yulatarasova22
Предмет: Русский язык,
автор: Настасья20001
Предмет: Русский язык,
автор: LimeMetes
Предмет: Литература,
автор: danilnafikov14
Предмет: Математика,
автор: Xokky1