Если предполагается, что ФИО вводится на одной строке через пробел, то первая программа будет такой:
var fio,s,f,i:string; p:integer;
begin
writeln('Введите ФИО');
readln(fio);
p:=pos(' ',fio);
s:=copy(fio,1,p-1)+'-'+fio[p+1];
delete(fio,1,p);
p:=pos(' ',fio);
s:=s+fio[p+1];
writeln(s);
end.
Программа для 2 задачи:
var s:string; i:integer;
begin
writeln('Введите строку');
readln(s);
for i:=1 to length(s) do
case s[i] of
'А': s[i]:='Б';
'а': s[i]:='б';
'Б': s[i]:='А';
'б': s[i]:='а';
end;
writeln(s);
end.