1)
var
str : string;
begin
readln (str);
writeln (length (str) - pos (':', str));
end.
2)
var
str, s : string;
count, i : integer;
begin
readln (str);
s := copy (s, pos ('(', str) + 1, pos (')', str) - pos ('(', str) - 1);
count := 0;
for i := 1 to length (s) do
if s[i] = ' ' then inc (count);
writeln (count + 1);
end.
3)
var
str : string;
count : integer;
begin
readln (str);
count := 0;
while pos (',', str) > 0 do
begin
inc (count);
delete (str, pos (',', str), 1);
end;
writeln (str);
writeln (count);
end.
Сделано без проверки на соответствие условию.
В строке 1 размещается повторяющееся ключевое слово. В строке 2 – сдвиги, соответствующие буквам ключа.
Функция КОДСИМВ(символ) в качестве результата получает код аргумента. Аргументом может быть либо символьная константа, либо адрес ячейки, в которой хранится символ. В последнем случае выдается код содержимого ячейки. Поскольку буквы английского алфавита в коде расположены по алфавиту и имеют подряд идущие номера (внутренние коды), то порядковый номер буквы в алфавите равен коду данной буквы минус код буквы «a» плюс единица. Так вычисляется сдвиг, соответствующий букве ключевого слова.
В строке 3,5,7 располагаются шифруемые слова. В ячейках строки 4, 6, 8 помещаются формулы шифрования.
Функция СИМВОЛ(код символа) возвращает символ по значению его ASCII-кода.
Функция ОСТАТ(делимое; делитель) возвращает остаток от целочисленного деления. Английский алфавит содержит 26 букв. Остатки деления на 26 – числа в диапазоне от 0 до 25. Это позволяет оставаться в пределах кодов английского алфавита (строчных букв): от кода буквы «a» до кода буквы «z».