Дана строка состоящая из нескольких слов, вывести все слова оканчивающиеся на "ая".
Дана строка удалить из неё все слова в которых больше 2 - ух букв "а".
Пояснения в решении. Решение 1.
program stroki;
procedure podstr(st : string);
var
b : integer;
begin
b := pos('ая', st); //ищем подстроку
if b <> 0 then // есть искомая подстрока
if b = length(st) - 1 then
writeln(st);
end;
var
s, s1 : string;
i : integer;
begin
writeln('введите строку.');
readln(s);
if length(s) > 0 then
begin
i := 1;
repeat
if s[i] = ' ' then
begin
delete(s1, i, 1); // удаляем пробел
podstr(s1); // выз. процедуру
delete(s, 1, i); // удаляем слово
i := 0;
s1 := '';
end
else s1 := s1 + s[i]; // ищем слово до пробела
inc(i);
// увеличиваем i на еденицу
until (i = length(s)+1);
podstr(s1);
//последнее слово
end
else writeln('Вы не ввели строку.');
readln;
end.
Решение 2.
program sss2;
const Alpha : set of char=['A'..'Z','А'..'П','Р'..'Я','a'..'z','а'..'п','р'..'я'];
var
s, s1, s2 : string;
i, j : integer;
a : integer; // кол-во букв "а"
b : integer; // кол - во удаленных слов
begin
writeln('Введите предложение.');
writeln;
readln(s);
i := 1; b := 0;
repeat
while NOT(s[i] in alpha) and (i <= length(s)) do {ищем не букву "разделитель"}
inc(i); {разделитель может быть пробел, цифра, знак препинания}
{и пропускаем его}
s1 := '';
while (s[i] in Alpha) and (i<=length(s)) do {если символ принадлежит}
begin {множеству записываем его в s1}
s1 := s1 + s[i]; {это и будет искомое слово}
inc(i);
end;
if length(s1) <> 0 then {обрабатываем выделенное слово}
begin
a := 0;
for j := 1 to length(s1) do {считаем кол-во букв "а"}
if (s1[j] = 'a') or (s1[j] = 'а') then inc(a);
{если меньше 2 то записываем в новую переменную}
{это будет обработанное предложение}
if a <= 2 then s2 := s2 + s1 + ' '
else inc(b); {если <2 считаем сколько слов удалили}
end;
until i > length(s);
writeln('Исходная строка.'); {выводим исходную строку. можно удалить}
writeln(s);
writeln;
if b = 0 then {выводим обработанную строку}
begin
writeln('Нет слов, в которых больше 2 букв "а"');
writeln;
writeln('Обработанная строка.');
writeln(s2);
end
else
begin
writeln('Во введённой строке есть слова, в которых больше 2-ух букв "а".');
writeln('Удалено ', b, ' Слов.');
writeln;
writeln('Обработанная строка.');
writeln(s2);
end;
readln;
end.