Дана строка вывести все слова в отдельной строке.
program sss2;
const Alpha : set of char=['A'..'Z','А'..'П','Р'..'Я','a'..'z','а'..'п','р'..'я'];
var
s, s1 : string;
i : integer;
begin
writeln('Введите предложение.');
readln(s);
writeln(' список слов в тексте.');
i := 1;
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 writeln(s1); {выводим это слово}
until i > length(s);
readln;
end.
Дана строка состоящая из нескольких слов, вывести все слова на новой строке и поменять местами соседние буквы.
Пояснения по ходу решения.
program sss2;
const Alpha : set of char=['A'..'Z','А'..'П','Р'..'Я','a'..'z','а'..'п','р'..'я'];
function obmen(str : string) : string; {функция произвдит обмен двух}
var {соседних букв в слове}
a : integer;
st: string;
begin
a := 1; obmen := '';
while a < length(str) do
begin
st := '';
st := str[a + 1] + str[a];
obmen := obmen + st;
a := a + 2;
end;
{ниже проверяем если длина слова нечетная, то последняя буква остаётся}
{без пары, просто добавляем её в конец }
if odd(length(str)) then obmen := obmen + copy(str, length(str), 1);
end;
var
s, s1 : string;
i : integer;
begin
writeln('Введите предложение.');
readln(s);
writeln(' список слов в тексте.');
i := 1;
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
writeln;
writeln('Исходное слово. = ', s1);
writeln;
write('Обработанное слово. ');
writeln(obmen(s1)); {вызываем функцию обработки}
end;
until i > length(s);
readln;
end.