Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

И замена фрагментов текста

Листинг 9.1. Вывод строки в перевернутом виде и по отдельным словам | Операции над строками | Понятие множества | Операции над множествами | Случайных неповторяющихся чисел | Определение и правила записи |


Читайте также:
  1. II. Выберите ОДНО из заданий. А) Комплексный анализ прозаического текста.
  2. А) Заполните таблицу о персонажах из текста упр.8.
  3. Автор текста и таблиц "Безумный Майк" Каро.
  4. Анализ текста
  5. АНАЛИЗ ТЕКСТА
  6. Банк экзаменационных билетов
  7. Ввод и оформление текста

Эти действия постоянно выполняются при редактировании текста различ­ными текстовыми процессорами. Использование процедур и функций для работы со строками превращает программирование подобных задач обра­ботки текстов в довольно увлекательное занятие. В качестве примеров рас­смотрим две небольшие задачи.


первая из них (листинг 9.5) позволит сократить размер текста без искаже-ия его содержания. Удалим из текста все незначащие пробелы (ведущие, шершающие и лишние между словами). Кроме того, заменим устойчивые эчетания типа "так как", "то есть" их аббревиатурами "т. к.", "т. е.". Сокра-[ение размеров текста особенно важно, например, при пересылке писем по чектронной почте.

Пистинг 9.5. Программа, сокращающая размер текста 5ез искажения содержания

$V-}{ отключили проверку полной совместимости типов }

ar s:string[80];{ формальный и фактический параметры разных типов }

•rocedure delspace(var s: string);

egin

{ пробелы удаляются до тех пор, пока функция роз выдает ненулевой результат при поиске двойного пробела в строке } while роз (' ',з}>0 do delete(з,роз(' ',s),l);

if s[l] = ' ' then delete (s,1,1); f удаляем пробел из начала строки } if sflength(s)J=' ' then delete(s,length (s),1); f и из конца } nd;

rocedure itd_itp(var s:string); Dnst a;array[1.. 4] of string[15] =

('и т. д,', 'и тому подобное1, 'т. к. ', 'т. е. '); al:array[I..4] of string[5]=('и т.д1, 'и т.п', 'т.к', 'т.е'); ie k,p:integer;:gin for k:=l to 4 do begin { сокращаем каждую из 4 фраз J

while роз(a[k],s)>0 do begin { пока встречается фраза }

p:=pos(a[k],s); (определяем номер первого символа фразы } delete(s,p,length(a[k])};{ удаляем фразу }

{ если после фразы стояла точка, то не добавляем последнюю '.') } if s[p]='.p then insert(al[k],s,p} else insert(al[k]+'.',s,p); end; end; id; fein

writeln('Введите строку текста:'); readln(s); delspace (s); itd_itp(s); writelnf'Сокращенный вариант:'); writeln(s); readln

'

торая программа (листинг 9.6) может несколько увеличить размер обраба-ываемой строки текста, т. к. она проверяет обязательное наличие пробела


после любого знака препинания. При отсутствии пробела она вставляет en в нужное место.

f............................................................................. •.................;................. v............................. •.....:.......

| Листинг 9,6. Программа, контролирующая наличие пробелов I после знаков препинания •'•.'

{ все знаки препинания поместили в служебную строку } const ch:string[6]='.,:;!?'; var s:string;

procedure insspace{var s:string); var k,1:integer; begin k:=l; repeat

for 1:=1 to 6 do

{ немного усложним условие, чтобы не забыть про многоточие или три восклицательных знака подряд }

if (s[k]=ch[l]) and (s[k+1]<>ch[1]) then insertf' ',s,k+l); k:=k+l;

until k=length(s);{ последний символ не рассматриваем, чтобы строка не оканчивалась пробелом } end; begin

writeln ('Введите строку текста:'); readln(s); insspace(s);

writeln{'Вставляем пробел после знаков препинания:'); writeln(s); readln end.


Дата добавления: 2015-11-14; просмотров: 53 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Процедуры преобразования типов| Преобразование строчных букв в заглавные

mybiblioteka.su - 2015-2024 год. (0.007 сек.)