1). Задание Дана строка символов S, состоящая из латинских букв. Группы символов, разделенные пробелами и не содержащие пробелов внутри себя, будем называть словами. Преобразовать исходную строку в строки S1 и S2 в соответствии с пунктами 1 и 2 (п. 1, п. 2). Если какая-либо из итоговых строк окажется пустой, выводить соответствующее сообщение. п. 1. Напечатать слова, отличные от последнего слова, которые симмет-ричны. п.2. Напечатать все слова, отличные от последнего слова, заменив первое вхождение x на ks, если такое есть.
2).Текст программы на языке Pascal Program Ex2; Uses Crt; {Подключение модуля Crt} Type stroka = array of string; Var slova, otl: stroka; S, S1, S2, w, v, S2x, S2ks: String; n, k, l, i, sl, t, j, z: byte; {Вспомогательные переменные} BEGIN ClrScr; {очистка текущего окна на экране} Writeln ('Введите строку, состоящую из латинских букв'); Readln (S); {Ввод строки S} n := Length (S); {Вычисление длины строки S} k := 0; {Обнуление количества слов в строке S} l := 0; {Обнуление длины слова} For i := 1 to n do {Цикл с параметром для поиска отдельных слов в строке S} If S[i] = ' ' then Begin if l > 0 then begin SetLength (slova,(k+1)); {Выделение места в динамическом массиве для очередного слова} sl := (i-l); {Определение позиции строки S, с которой начинается очередное слово} slova [k] := Copy (S, sl, l); {Копирование слова из строки в массив} L := 0; {Обнуление длины слова} inc (k); {Увеличение счетчика слов} end; End else inc (l); {Увеличение длины слова} {Выход из цикла с параметром при i = n+1} If l > 0 then {Определение последнего слова, если строка не заканчивается пробелом} Begin SetLength (slova,(k+1)); {Выделение места в динамическом массиве для по-следнего слова} sl := (i-l+1); {Определение позиции строки S, с которой начинается последнее слово} slova [k] := Copy (S, sl, l); {Копирование последнего слова из строки в мас-сив} inc (k); {Увеличение счетчика слов} End; If k = 0 then writeln ('В веденной Вами строке нет слов') else Begin {Определение слов отличных от последнего} t := 0; {Обнуление количества отличных слов} For i := 0 to (k-1) do {Цикл с параметром для поиска слов отличных от последнего} If slova [i] <> slova [k-1] then {Сравнение каждого слова с последним} Begin SetLength (otl,(t+1)); {Выделение места в динамическом массиве для очередного отличного слова} otl [t] := slova [i]; {Заполнение массива отличными словами} inc (t); {Увеличение счетчика слов} End; {Выход из цикла с параметром при i = k} If t = 0 then writeln ('В веденной Вами строке нет слов отличных от последнего') else Begin {Определение симметричных слов} For i := 0 to (t-1) do {Цикл с параметром для поиска симметричных слов} Begin w := otl[i]; {Выделение отдельного слова из массива} For j := Length (w) downto 1 do {Слово записывается в обратном по-рядке} v := v + w[j]; If w = v then {Сравнение прямого и обратного слов} S1 := S1 + ' ' + w; {Формирование строки S1} Delete(v, 1, Length (v)); {Удаление обратного слова} End; {Выход из цикла с параметром при i = t} If Length (S1) = 0 then {определение длины строки S1} writeln ('В веденной Вами строке нет симметричных слов отличных от последнего.') else writeln ('S1:', S1); {Вывод строки S1} {Определение первого вхождения 'x' в словах} S2x := 'x'; S2ks := 'ks'; For i := 0 to (t-1) do {Цикл с параметром для поиска первого вхождения 'x' в словах} Begin w := otl[i]; {Выделение отдельного слова из массива} z := Pos(S2x, w); {Поиск первого вхождения 'x' в слове} If z > 0 then {Определения в слове наличия буквы 'x'} Begin {Замена в слове первого 'x' на 'ks'} Delete (w,z,1); {Удаление из слова первого вхождения 'x'} Insert (S2ks,w,z); {Добавление в строку 'ks' на место 'x'} End; S2 := S2 + ' ' + w; {Формирование строки S2} End; {Выход из цикла с параметром при i = t} Writeln ('S2:', S2); {Вывод строки S2} End; End; ReadKey END.
3). Результаты работы программы Вх. – входные данные (строка S); Вых. – выходные данные.
Вх.: «anna xeniya i azaza sdelali zakaz» Вых.: «S1: anna i azaza» «S2: anna kseniya i azaza sdelali»
Вх.: « mnogo mango ela anna mnogo» Вых.: «S1: anna» «S2: mango ela anna»
Вх.: « sasha i xeniya eli mnogo mango » Вых.: «S1: i» «S2: sasha i kseniya eli mnogo»
Вх.: «xeniya ela mango» Вых.: «В веденной Вами строке нет симметричных слов отличных от последнего» «S2: kseniya ela»
Вх.: « plaxa xyuxa napisala axaxaxa axaxa » Вых.: «S1: axaxaxa» «S2: plaksa ksyuxa napisala aksaxaxa» Вх.: «mnogo mango ela ada ada» Вых.: «В веденной Вами строке нет симметричных слов отличных от последнего» «S2: mnogo mango ela»
Вх.: «ada ada ada » Вых.: «В веденной Вами строке нет слов отличных от последнего»