Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КНИГА_Учимся программировать TURBO PASCAL 7.doc
Скачиваний:
32
Добавлен:
19.08.2019
Размер:
1.62 Mб
Скачать

Var str : string;

К, L, I : INTEGER;

F : BOOLEAN;

BEGIN

WRITELN('BBEДИTE ТЕКСТ ДО ТОЧКИ');

READLN(STR);

L := LENGTH(STR);

F := FALSE; I := 1; К := 0;

REPEAT

IF (STR[I]<>' ')AND(NOT F) THEN F := TRUE;

IF (STR[I] = ' ')AND(F) THEN

BEGIN

F := FALSE; К := K+1

END;

I := 1+1

UNTIL (STR[I] = '.')OR (I>L);

IF STR[I-1]<>' 'THEN К := K+1;

WRITELN('KOЛИЧECTBO СЛОВ К = ', К)

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- устанавливаем начальные значения переменных, флаг F опущен;

- цикл REPEAT... UNTIL (STR[I] = '.')or (I>L) осуществляет просмотр строки до первой точки или конца строки;

- если найдено начало очередного слова (STR[I]<>')AND(NOT F), то поднимаем флаг;

- если обнаружен конец слова (STR[I] = ' ')AND(F), то увели­чиваем значение счетчика слов на единицу и сбрасываем флаг;

- по выходе из цикла обрабатываем последнее слово в тексте. Если между концом этого слова и точкой не было пробелов, то значение счетчика К не учитывает это слово и К := К+1;

- выводим значение счетчика К на экран.

Переменные:

I - переменная цикла;

L - длина строки;

К - счетчик слов;

STR - строка текста;

F - логический флаг.

ВВЕДИТЕ ТЕКСТ ДО ТОЧКИ

DFGRA AA BNC . FDFDFD

КОЛИЧЕСТВО СЛОВ К = 3

ВВЕДИТЕ ТЕКСТ ДО ТОЧКИ

DFGR FFFFFF GGGGG К, ;;;; BNC.

КОЛИЧЕСТВО СЛОВ К = 6

Рис. 4.3. Результат работы PRG4_8

Практические задания

1. Дана символьная строка. Определить длину самой длинной подстроки из подряд стоящих букв "а",

2. Дана строка символов. Определить, сколько в ней слов, начи­нающихся и кончающихся на одну и ту же букву.

3. Вывести на экран следующий текст в виде ромба:

О

ООО

ХХХХХ

ООООООО

ХХХХХ

ООО

о

4. Дана строка символов. Удалить из нее последний знак препи­нания.

5. Дана строка символов. Удалить из нее каждое слово нечетной длины. Слова отделяются друг от друга одним пробелом.

6. Дана строка символов. Удалить из нее каждое слово нечетной длины. Слова отделяются друг от друга группой пробелов.

7. Дана строка символов. Определить длину самого длинного и самого короткого слова.

Тема 5 Обработка строк

Для работы со строками в PASCAL встроены специальные функции и процедуры:

CONCAT - объединение строк;

COPY - копирование подстроки;

LENGTH - длина строки;

POS - поиск подстроки в строке;

DELETE - удаление подстроки из строки;

INSERT - вставка подстроки в строку;

STR - преобразование числа в строковую переменную;

VAL - преобразование символьного представления числа в двоичное представление.

Формат этих функций и процедур представлен в табл. 5.1.

Таблица 5.1

Функция

Назначение и формат

CONCAT

Возвращает объединение строк

CONCAT(STR1, STR2)

STR1, STR2 - конкатенируемые строки

COPY

Возвращает копию подстроки из J символов, которые располагаются в строке STR начиная с позиции I

COPY(STR, I, J)

LENGTH

Возвращает длину строки STR LENGTH(STR)

POS

Возвращает номер позиции, начиная с которой распола­гается подстрока CONTEXT в строке STR POS(CONTEXT, STR)

DELETE

Удаляет из строки STRJ символов начиная с позиции I DELETE (STR, I, J)

INSERT

Вставляет подстроку CONTEXT в строку STR начиная с позиции I INSERT(CONTEXT, STR, I)

STR

Преобразует число N в строковую переменную STR STR(N, STR)

VAL

Преобразует строку STR в двоичное число X, где CODE - код неправильного символа VAL(STR, X, CODE)

Рассмотрим несколько примеров.

Задача 5.1 Дана строка символов. Дано слово. Удалить из строки это слово.

Основная сложность при решении данной задачи состоит в разделении понятий "слово" и "подслово". В тексте АПРОЛ МИТ слова ИТ нет, а есть подслово ИТ. Для того, чтобы четко разде­лить эти понятия, при просмотре допишем перед словом WRD и перед STR - пробел

WRD := CONCAT(' ', WRD);

STR:= ' '+STR;

После слова делать этого не следует, т. к. нам следует отличать знаки препинания от значимых слов.

PROGRAM PRG5_1;