Задача: Дана строка символов S, состоящая из латинских букв. Группы символов, разделенные пробелами и не содержащие пробелов внутри себя, будем называть словами. Преобразовать исходную строку в строки S1 и S2 в соответствии с пунктами 1 и 2 (п.1, п.2) заданий № 1 - 30. Если какая-либо из итоговых строк окажется пустой, выводить соответствующее сообщение. п.1. - Напечатать все слова, отличные от последнего слова, в которые последняя буква входит еще раз. п.2. - Напечатать все слова, отличные от последнего слова, преобразовав их таким образом: после каждой буквы q добавить букву u.
program stk; uses crt; var n,i,j,w: integer; str,slov: string; a: array[1..100] of string; begin clrscr; writeln ('Vvedite tekst'); {Ввод исходного текста} readln (str); n:=length(str); j:=1; for i:=1 to n do begin if (str[i]<>' ') and (i<n) {Текст разбивается на слова и каждое слово заносится в ячейку массива} then slov:=slov+str[i] else begin if str[i]=' ' then a[j]:=slov else a[j]:=slov+str[i]; w:=j; {Переменной w присваевается последнее значение переменной j (последнее слово)} j:=j+1; slov:=''; end; end; for j:=1 to w-1 do {Производиться сравнение всех слов с последним} if a[j]=a[w] then continue else begin for i:=1 to length(a[j])-1 do {Производиться поиск буквы аналогичной последней в каждом слове} if a[j][length(a[j])]=a[j][i] then begin write(a[j]+' '); break; end end; writeln; {Вывод строки согласно условию №1} for j:=1 to w-1 do if a[j]=a[w] then continue else begin for i:=1 to length(a[j]) do {поиск буквы "q" в словах} if a[j][i]='q' then write(a[j][i]+'u') {Добавление к букве "q" буквы "u"} else write(a[j][i]); write(' '); end; writeln; {Вывод строки согласно условию №2} readkey; end.
Результаты работы программы:
Исходный текст: to be or not to be that is the question Строка по условию №1 that Строка по условию №2 to be or not to be that is the