Вводится строка текста из N, символов слова разделены одним пробелом. Найти количество слов, у которых первая и последняя буквы одинаковые. Тоже предложение ограничено точкой.

{вводиться строка из N символов, слова разделены одним пробелом. Найти кол-во слов у которых первая и последняя буква одинаковые}

program zad1;
var
str : string; {строка}
i, l, k, nw : integer;

begin
i := 1; k := 0; {задаём начальные значения счётчиков}
writeln('Введите строку');
readln(str); {вводим строку}
l := length(str); {определяем длину строки}
while (i <= l) do {пока не конец строки}
begin
if str[i] = ' ' then inc(i); {пропускаем пробел i увел. на 1}
nw := i; {запоминаем номер начала слова}
while (i <= l) and (str[i] <> ' ') do
inc(i); {в цикле прокручивается слово до следующего пробела}

if str[nw] = str[i-1] then inc(k); {если первый и последний символ
одинакове увел на 1}

end;

writeln('Кол - во слов удовлетворяющих задаче = ', k);
readln; {ждем нажатия клавиши ентер}
end.


В данном решении не учитывается, что символы могут быть введены по одному, например «п п п а к» тогда ответ будет равен 5.

Скачать архив с решением.

Ниже второй вариант решения, с учетом того, что посчитать слова надо в первом предложении, которое ограничено точкой.

program zad1;

const zp = ['.']; {множество знаков препинания, у нас точка}

var
str : string; {строка}
i, l, k, nw : integer;
a : integer; {позиция первой точки}

begin
k := 0; a := 0; i := 1; {задаём начальные значения счётчиков}
writeln('Введите строку');
readln(str); {вводим строку}

l := length(str); {определяем длину строки}

while not (str[i] in zp) do {ищем позицию первой точки}
inc(i);

a := i;
i := 1;
str := copy(str, 1, a-1); {копируем в строку всё до точки}
l := length(str); {заново пересчитываем длину строки}

while (i <= l) do {пока не конец строки}
begin
if str[i] = ' ' then inc(i); {пропускаем пробел i увел. на 1}
nw := i; {запоминаем номер начала слова}

while (i <= l) and (str[i] <> ' ') do
begin
inc(i); {в цикле прокручивается слово до следующего пробела}
end;

if str[nw] = str[i-1] then inc(k); {если первый и последний символ
одинакове увел на 1}

end;

writeln('Кол - во слов удовлетворяющих задаче = ', k);
readln; {ждем нажатия клавиши ентер}
end.



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



Hosted by uCoz