ВУЗ:
Составители:
Рубрика:
203
Для одинаковой обработки всех символов предложения добавим к концу
предложения дополнительный символ - пробел. Как только обнаружится конец
слова, вычислим его длину и проверим на максимум:
smax:=''; { слово максимальной длины }
readln(s); { исходное предложение }
s:=s+' '; { исходное предложение с дополнительным пробелом }
ss:='' { текущее слово предложения }
for i:=1 to length(s)-1 do { просмотр предложения по два символа }
if (copy(s,i,1)<>' ') and (copy(s,i+1,1)=' ')
{ если текущий символ не
пробел, а следующий - пробел }
then begin ss:=ss+copy(s,i,1); { дописали последний символ }
if length(smax)<length(ss)
then smax:=ss; { если длина нового слова больше, чем
длина smax, то запоминаем его }
ss:='' { готовим место для следующего слова }
end
else if copy(s,i,1)<>' ' then ss:=ss+copy(s,i,1).
{ если текущий символ не пробел, то запоминаем его в слове }.
Пример 12.8. Задано предложение, состоящее из слов, разделенных одним или
несколькими пробелами. Упорядочить слова предложения в алфавитном порядке.
Решение. Перепишем слова предложения по одному в элементы одномерного
массива. Отсортируем массив по возрастанию и перепишем слова из массива в
строку.
const nn=100; { максимальное количество слов в предложении }
type mas=array[1..nn]of string; { тип массива строк }
var a:mas; { массив слов предложения }
i,j, { индексы массивов, i - номер обрабатываемого символа }
k:integer; { количество слов в предложении, индекс массива слов }
s, { исходное предложение и результат }
r:string;{ текущее слово предложения, переменная для обмена слов }
begin
write('Введите строку ');
readln(s);
s:=s+' '; { добавили пробел в конце для однотипной обработки всех слов }
k:=0; { количество слов в предложении }
r:=''; { текущее слово }
for i:=1 to length(s)-1 do {просмотр предложения по два символа}
if (copy(s,i,1)<>' ') and (copy(s,i+1,1)=' ')
{ если текущий символ не пробел, а следующий пробел }
then begin r:=r+copy(s,i,1); { дописать символ к слову }
k:=k+1; { увеличить количество слов }
a[k]:=r; { записать слово
в массив}
r:='' { подготовить место для следующего слова }
end
else if copy(s,i,1)<>' ' then r:=r+copy(s,i,1);
{ если текущий символ не пробел, то записать его в слово }
203 Для одинаковой обработки всех символов предложения добавим к концу предложения дополнительный символ - пробел. Как только обнаружится конец слова, вычислим его длину и проверим на максимум: smax:=''; { слово максимальной длины } readln(s); { исходное предложение } s:=s+' '; { исходное предложение с дополнительным пробелом } ss:='' { текущее слово предложения } for i:=1 to length(s)-1 do { просмотр предложения по два символа } if (copy(s,i,1)<>' ') and (copy(s,i+1,1)=' ') { если текущий символ не пробел, а следующий - пробел } then begin ss:=ss+copy(s,i,1); { дописали последний символ } if length(smax)' ' then ss:=ss+copy(s,i,1). { если текущий символ не пробел, то запоминаем его в слове }. Пример 12.8. Задано предложение, состоящее из слов, разделенных одним или несколькими пробелами. Упорядочить слова предложения в алфавитном порядке. Решение. Перепишем слова предложения по одному в элементы одномерного массива. Отсортируем массив по возрастанию и перепишем слова из массива в строку. const nn=100; { максимальное количество слов в предложении } type mas=array[1..nn]of string; { тип массива строк } var a:mas; { массив слов предложения } i,j, { индексы массивов, i - номер обрабатываемого символа } k:integer; { количество слов в предложении, индекс массива слов } s, { исходное предложение и результат } r:string;{ текущее слово предложения, переменная для обмена слов } begin write('Введите строку '); readln(s); s:=s+' '; { добавили пробел в конце для однотипной обработки всех слов } k:=0; { количество слов в предложении } r:=''; { текущее слово } for i:=1 to length(s)-1 do {просмотр предложения по два символа} if (copy(s,i,1)<>' ') and (copy(s,i+1,1)=' ') { если текущий символ не пробел, а следующий пробел } then begin r:=r+copy(s,i,1); { дописать символ к слову } k:=k+1; { увеличить количество слов } a[k]:=r; { записать слово в массив} r:='' { подготовить место для следующего слова } end else if copy(s,i,1)<>' ' then r:=r+copy(s,i,1); { если текущий символ не пробел, то записать его в слово }
Страницы
- « первая
- ‹ предыдущая
- …
- 199
- 200
- 201
- 202
- 203
- …
- следующая ›
- последняя »