Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка.DOC
Скачиваний:
36
Добавлен:
13.05.2015
Размер:
772.61 Кб
Скачать

13. Обработка символьных строк

Строковые переменные аналогичны массивам типа char. Их отличием является то, что число символов (длина строковой переменной) может динамически меняться в интервале от единицы до заданного верхнего значения.

Перед выполнением данной лабораторной работы необходимо ознакомиться с правилами описания и использования переменных типа string, допустимыми операциями над ними, соответствующими стандартными процедурами и функциями.

Под множеством понимают некоторую неупорядоченную совокупность однородных объектов, объединенных под общим именем. Имена множеств образуются так же, как и имена простых переменных. Для описания множеств используется служебное слово set. Множество в Турбо-Паскале можно описывать двумя способами:

а) в разделе описания переменных VAR:

var

<имя переменной>: setof <базовый тип>;

б) определить сначала тип, а затем описать массив этим типом

type

<имя типа>: set of <базовый тип>;

var

<имя переменной>: <имя типа>;

где <базовый тип> - любой дискретный тип, содержащий не более 256 значений.

Задание 7

ЦЕЛЬ РАБОТЫ:

  1. Овладеть навыками составления алгоритмов и программ на языке Паскаль по обработке символьных строк.

  2. Научиться использовать встроенные функции для обработки строк.

ПРИМЕР 1:Удалить из строки все "лишние" (парные) пробелы.

А Л Г О Р И Т М

алгУдаление пробелов

аргS: лит

резS: лит

рабl: цел

нач

вводS

l:=вхождение (" ", S)

если l=0

товывод"удаления не было"

иначенцпокаl > 0

удалить (S, вхождение (" ",S), 1)

l:=вхождение (" ", S)

кц

выводS

все

кон

П Р О Г Р А М М А

begin

writeln ('Удаление парных пробелов.');

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

readln (s);

I:=pos (' ', s);

if l=0 then

writeln ('Удаления не было')

else

begin

while l >0 do {пока в строке есть парные пробелы}

begin

delete (s,pos (' ',s), 1);

I:=pos (' ',s)

end;

writeln ('Получена строка:');

writeln (s);

end;

end.

ПРИМЕР 2:Дана строка символов с точкой в конце строки. Определить число различных букв, входящих в данную строку.

А Л Г О Р И Т М

алгЧисло различных букв в строке

аргstr:лит;M:множ симв;

резn: цел;

рабI: цел;

нач

вводstr

нцдля iот 1доlength(str)

если not(str[i] in M)

то M:=M+[str[i]];

n:=n+1;

все

кц

выводn

кон

П Р О Г Р А М М А

program kol-vo simv v stroke;

var M: set of char;

str: string;

n,i: integer;

begin

M:=[];

N:=0;

writeln ('Введите строку');

readln (str);

for i:=1 to length(str) do

if not(str[i] in M) then

begin

M:=M+[str[i]];

n:=n+1;

end;

writeln('Количество различных элементов в строке=',n:3);

end.

ПОРЯДОК РАБОТЫ

1. Разработать алгоритм и программу примера 1 (табл.12).

Разработать и реализовать алгоритм с применением множеств.

2. Разработать алгоритм и программу примера 2 (табл.13).

Разработать и реализовать алгоритм с применением множеств.

СОДЕРЖАНИЕ ОТЧЕТА

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

ТАБЛИЦА 12

НОМЕР

УСЛОВИЕ

1

Проверить, является ли строка палиндромом (т.е. читается ли она одинаково справа налево и слева направо). Пробелы игнорируются. Например, шалаш, а роза упала на лапу азора.

2

Проверить, верно ли что в строке чередуются гласные и согласные буквы. Пробелы игнорируются.

3

Проверить, имеется ли в заданном тексте баланс открывающихся и закрывающихся скобок.

4

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

5

В заданном предложении найти самое короткое и самое длинное слово.

6

Для каждого символа заданного текста указать, сколько раз он встречается в тексте. Сообщение об одном символе должно печататься не более одного раза.

7

В заданном тексте удалить символ "," и подсчитать число удаленных символов.

8

В заданном тексте подсчитать количество гласных букв.

9

В заданном тексте заменить каждый символ "а", стоящий на четном месте, на символ "о".

10

Подсчитать количество слов в предложении.

ТАБЛИЦА 13

НОМЕР

ВАРИАНТА

УСЛОВИЕ

1

Дан массив из слов А(N). Найти все слова, заканчивающиеся гласной буквой.

2

Дан массив из слов Х(m). Найти все слова четной длины.

3

Дан массив из слов У(к). Найти все слова с нечетным количеством буквы "о".

4

Дан массив из слов A(m). Найти все слова с длиной, не превышающей заданной.

5

Дан массив из слов X(n). Найти все слова, содержащие хотя бы одно вхождение заданной подстроки.

6

Дан массив из слов A(k). Найти все слова, начинающиеся и заканчивающиеся одной и той же буквой.

7

Дан массив из слов A(k). Найти все слова с нечетным количеством буквы "о".

8

Дан массив из слов У(L). Найти все слова, содержащие шипящие.

9

Дан массив из слов A(n). Найти все слова, начинающиеся с заданной буквы.

10

Дан массив из слов У(m). Найти все слова с четным количеством буквы "а".