Пример 1. Составить программу обработки данной строки, позволяющую выписать все знаки сравнения и все скобки, сохранив их последовательность.
Решение. Все знаки сравнения и скобки перечислим в строковой константе srav_sk. В теле программы последовательно рассмотрим все символы введенной строки s, проверяя каждый на вхождение в строку srav_sk, выводя на экран содержащиеся в строковой константе символы строки s.
program string_1;
const srav_sk='<>=(){}[]';
var s:String; i:Integer;
begin
Writeln('Введите строку:'); Readln(s);
for i:=1 to Length(s) do
if Pos(s[i],srav_sk)<>0 then write(s[i]);
Readln
end.
Пример 2. Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Составить программу обработки данной строки, выводящую через запятую слова четной длины, которые при обмене местами левой и правой половины дают то же слово (например, папа, мама, канкан).
Решение. В строке, последовательно перебирая элементы, будем выделять начало ns и конец ks каждого слова, копировать слово в другую строковую переменную, а затем проверять четность длины и равенство частей строки slovo. Слова, для которых выполнено условие задания будем склеивать в переменной otv. После добавления к ответу последнего слова в конце otv будет лишняя запятая, которую перед выводом на экран необходимо удалить.
program string_2;
var s, slovo, otv:String; ns, ks, i, m: Integer;
begin
Writeln ('Введите строку:'); Readln(s);
i:=1; ns:=1; otv:=''; s:=s+' ';
while i<=Length(s) do
begin
while (i<=Length(s)) and (s[i]<>' ') do i:=i+1; {ищем очередной пробел}
if (Length(slovo) mod 2=0) and (Copy(slovo,1,m)=Copy(slovo,m+1,m))
{если слово имеет четную длину}
then otv:= otv+slovo+ ','; {добавляем слово к ответу}
while (i<=Length(s)) and (s[i]=' ') do i:=i+1; {пропускаем пробелы}
ns:=i; {начало следующего слова}
end;
Delete(otv, Length(otv), 1); {удаляем лишнюю запятую в конце}
Writeln(otv);
Readln
end.
Варианты заданий
Задание 1. Составить программу обработки данной строки, позволяющую:
a) выписать все прописные буквы из данной строки в порядке их следования;
b) определить, содержатся ли в тексте цифры;
c) найти общее количество круглых, квадратных и фигурных скобок в тексте;
d) выписать все знаки препинания из данной строки, сохранив их последовательность;
Задание 2. Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Составить программу обработки данной строки, выводящую через запятую:
a) слова, одинаково читающиеся справа налево и слева направо;
b) слова заданной длины, в которые входит данная буква;
c) слова, начинающиеся с прописной буквы, в которых все остальные буквы строчные;
d) слова, которые начинаются и заканчиваются одной и той же буквой и содержат хотя бы одну введенную с клавиатуры букву.