В письменности языка НРЗБРЧВ отсутствуют гласные буквы и знаки препинания, в остальном...

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

В письменности языка НРЗБРЧВ отсутствуют гласные буквы и знаки препинания, в остальном язык ничем не отличается от русского языка. Чтобы из слова русского языка получить слово языка НРЗБРЧВ, достаточно выкинуть из слова все гласные. Чтобы перевести предложение, нужно перевести каждое слово и выкинуть знаки препинания. Регистр букв следует оставить неизменным. Напишите функцию translate(text), которая переводит текст с русского языка на НРЗБРЧВ. Свой результат функция должна записать во внешнюю переменную translatedText. Формат ввода translatedText = None translate("Удивительный факт, но текст на языке НЕРАЗБОРЧИВО оказывается довольно просто читать. Достаточно небольшой тренировки - и вы сможете это делать.") Формат вывода translatedText == "двтльнй фкт н ткст н зк НРЗБРЧВ кзвтс двльн прст чтть Дсттчн нбльшй трнрвк в смжт т длть" Примечания Слова в НРЗБРЧВ разделяются ровно одним пробелом. Обратите внимание, что при переводе некоторые короткие слова “съедаются” полностью. Следите за тем, чтобы в этом случае не появлялись лишние пробелы.


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

Замечание: можно здесь обойтись и без переменной translatedText в функции.

var translatedText:string;
function translate(s:string):string;
const
gl:set of char=
['А','Е','Ё','И','О','У','Ы','Э','Ю','Я','а','е','ё','и','о','у','ы','э','ю','я'];
zn:set of char=['.',',','-','!','?','"',':'];
var i:integer;
begin
for i:=length(s) downto 1 do
 if s[i] in gl+zn then delete(s,i,1);
while pos('  ',s)>0 do delete(s,pos('  ',s),1);
translate:=s;
translatedText:=s;
end;
begin
translate('Удивительный факт, но текст на языке НЕРАЗБОРЧИВО оказывается довольно просто читать. Достаточно небольшой тренировки - и вы сможете это делать.');
writeln(translatedText);
end.

Результат:двтльнй фкт н ткст н зк НРЗБРЧВ кзвтс двльн прст чтть Дсттчн нбльшй трнрвк в смжт т длть

(194k баллов)