Помогите, пожалуйста, с Паскалем! а) С клавиатуры вводится предложение - строка, в...

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

Помогите, пожалуйста, с Паскалем!
а) С клавиатуры вводится предложение - строка, в которой есть слова, разделённые пробелом без повторов. Выведите слова в порядке уменьшения их длин.
б) Напишите программу, которая будет кодировать введённое предложение шрифтом Цезаря. Суть кодировки в том, что каждый символ строки заменяется на символ, отстоящий в алфавите от заданного вправо на три позиции. Например, слово 'mama' превратится в 'pepe' (между символами 'm' и 'p' 3 символа). В программе используйте только латинские символы.


Информатика (60 баллов) | 29 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
// PascalABC.NET 3.2, сборка 1334 от 12.11.2016
begin
  var a:=ReadlnString('->').ToWords;
  a.Select((x,i)->(x,x.Length,i)).OrderByDescending(x->x[1]).
    ThenBy(x->x[0]).Select(x->x[0]).Println
end.

Пример
-> Карл у Клары украл кораллы Клара у Карла украла кларнет
кларнет кораллы украла Карла Клара Клары украл Карл у у

// PascalABC.NET 3.2, сборка 1334 от 12.11.2016
begin
  var s1:='abcdefghijklmnopqrstuvwxyz';
  var s2:='defghijklmnopqrstuvwxyzabc';
  var s:=ReadlnString('->');
  var p:integer;
  for var i:=1 to s.Length do begin
    p:=pos(s[i],s1);
    if p>0 then s[i]:=s2[p]
    end;
  Writeln(s)
end.

Пример
-> abracadabra
deudfdgdeud



(150k баллов)