Модуль
unit Stroka;
interface
procedure Vvod(var st:string);{ввод строки с проверкой соответствия условию}
function Obmen(st:string):string;{обмен первой и последней букв}
function KolSim(st:string; x:char):byte;{подсчет количества заданного символа}
implementation
procedure Vvod(var st:string);
var i,k:byte;
begin
repeat
Writeln('Vvedite stroky na anglijskom yazyke, slova razdeleny probelom:');
readln(st);
k:=0;
for i:=1 to length(st) do
if (not (st[i] in ['A'..'Z','a'..'z',' '])) or (st[1]=' '){если в строке есть не английские буквы или пробелы}
or(st[length(st)]=' ') or((st[i]=' ')and(st[i+1]=' ')) then{или пробел в начале или конце или больше 1 пробела подряд}
begin
k:=1;{фиксируем}
writeln('Povtorite vvod!');
break;{прекращаем проверку}
end;
until k=0;{если все нормально, продолжаем программу}
end;
function Obmen(st:string):string;
var st1,st2:string;
x:char;
i:byte;
begin
st:=st+' ';{добавим пробел в конец, чтобы все слова заканчивались одинаково}
st2:='';{новая строка, пока пустая}
while pos(' ',st)>0 do {пока в строке есть пробелы}
begin
st1:=copy(st,1,pos(' ',st)-1);{копируем очередное слово до пробела}
x:=st1[1];{запоминаем первую букву}
st1[1]:=st1[length(st1)];{на ее место ставим последнюю}
st1[length(st1)]:=x;{на последнее-первую}
st2:=st2+st1+' ';{составляем новую строку}
delete(st,1,pos(' ',st));{удаляем просмотренное слово с пробелом}
end;
Obmen:=st2;
end;
function KolSim(st:string; x:char):byte;
var i,k:byte;
begin
k:=0;
for i:=1 to length(st) do{идем по строке}
if st[i]=x then k:=k+1;{если нашли нужный символ, считаем}
KolSim:=k;
end;
end.
Программа
uses Crt,Stroka;{подключаем модуль}
var s:string;
c:char;
begin
clrscr;
Vvod(s);{вводим строку}
write('Simvol = ');readln(c);{вводим символ}
writeln(Obmen(s));{выводим измененную строку}
writeln('Kol sim ',c,'=', KolSim(s,c));{выводим количество символа}
readln
end.