Эта программа ужасна, если честно, просто извращение над паскалем(могу в коментах объяснить почему). Но она считает вхождение букв А, то есть вариант 2)
То есть виден цикл, которым мы бежим по строке и в переменную s добавляем каждый раз, когда условие верно. А условие (ужасное) гласит взять одну букву вперед от места, где мы сейчас и сравнить с 'a'.
var
s : string;
i : integer;
begin
readln (s);
for i := length (s) downto 1 do
if s[i] = ' ' then
insert (',', s, i);
writeln (s);
end.
Тут всё тоже просто, бежим по строке, если видим пробел, то функцией insert вставляем перед пробелом запятую. Проблема в том, что мы вставили запятую, перешли на новый символ - а там опять этот же пробел, он вперёд сместился из-за запятой. Поэтому лучше перебирать в обратном порядке.
Как мог расписал, спрашивайте, если что.