Дана строка состоящая из нескольких слов, вывести все слова оканчивающиеся на "ая".

Дана строка удалить из неё все слова в которых больше 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.
 

Скачать решение.

Hosted by uCoz