78.40K
Категория: ПрограммированиеПрограммирование

Строки

1.

Лекция
Строки
1

2.

Свойства структуры данных СТРОКА:
1.
2.
3.
4.
Линейная
Фиксированного размера
С произвольным доступом к
элементам
Однородная
2

3.

Литера - это символ, заключенный в апострофы.
Способы моделирования строки:
представлении строки в виде массива литер. В этом
случае над строкой определены все те операции,
которые определены над массивами и для обработки
строки используется типовые алгоритмы обработки
массивов.
предполагает использование - тип STRING. В этом
случае для обработки строки используются процедуры
и функции, позволяющие выполнять над текстом
различные действия, такие как
удалять часть
символов, вставлять новые символы в строку,
определять позицию некоторого символа в строке и т.д.
3

4.

Стандартные процедуры и
функции
Действия
Тип результата
функция, которая вырезает count литер
из строки st, начиная с позиции index
строковый
удаляет из строки st, count литер,
начиная с позиции index
результат возвращается в строке st
строковый
вставляет подстроку subst, в строку st,
начиная с позиции index
результат возвращается в строке st
строковый
функция, которая определяет длину
строки st
целый
функция, которая определяет позицию,
начиная с которой подстрока subst
входит в строку st
целый
VAL(ST, X, CODE)
преобразует строковую величину st в
числовую x, code - это признак
завершения операции. Если code=0 то операция прошла успешно, если
code 0, то в эту переменную
записывается номер позиции, в
которой встретилась литера.
целый
STR(X, ST)
преобразует числовое значение x в
строковое, результат возвращает в st.
строковый
COPY(ST, INDEX, COUNT)
DELETE (ST, INDEX, COUNT)
INSERT (SUBST, ST, INDEX)
LENGTH (ST)
POS (SUBST, ST)
4

5.

1.
Укажите
тип
переменной
х
в
операторе
присваивания:
x:=‘видео’+’адаптер’
2. Пусть задана программа
var
st, st1, st2: string;
begin
st1:= ‘инфо’;
st2:=’мати’;
st:=st1+' р'+st2+’ка’;
writeln(st);
end;
Чему будет равно значение переменной st=__________________
3. Строка а “аромат”, строка b равна “финик”. Известны алгоритмы
образования строк a и b из строки n:
a:=n[11]+n[5]+n[4]+n[6:8]
b:=n[3]+n[1:2]+n[9]+n[10]
Строка n=______________________
5

6.

4. Пусть задана программа
var
st, subst : string;
k : integer;
begin
st:=‘Мама мыла раму’;
subst:=’ма’;
k:=pos (subst, st);
writeln(k);
end;
Чему будет равно значение переменной k=__________________
5. Пусть задана программа
var
st : string;
k : integer;
begin
st:=‘Динамическое программирование.’;
k:=length(st);
writeln(k);
end;
Чему будет равно значение переменной k=__________________
6

7.

6. Пусть задана программа
var
st : string;
k, i : integer;
begin
st:=‘Программирование’;
k:=length(st);
i:=1;
while i<=k do
if st[i]=’р’ then delete (st, i, 1)
else i:=i+1;
writeln(st);
end;
Чему будет равно значение переменной st=__________________
7

8.

Задача 1. Дан текст. Подсчитать количество букв а в последнем слове
данного текста.
Анализ постановки задачи
Исходным данным для решения задачи является строковая
переменная st, в которой хранится заданный текст.
Введем обозначения объектов программы:
i- переменная целого типа обозначающая номер текущей
литеры; col- переменная, в которой будем хранить
количество букв а в последнем слове.
Для решения задачи воспользуемся следующим алгоритмом:
Введем исходную строку.
Определим позицию последнего символа в строке (т.к. текст
будем рассматривать с конца).
Обнулим счетчик.
Посимвольно проведем сравнение с буквой а до пробела.
Выведем результат.
8

9.

Подпрограмма
PROCEDURE chet (st: string; var col: integer);
VAR
i: integer;
BEGIN
i:=length(st);
col:=0;
while st[i]<>' ' do begin
if st[i]='а' then col:=col+1;
i:=i-1
end;
END;
9

10.

Задача 2. Дан текст. Выдать на печать самое длинное слово
из текста, учитывая, что все слова разной длины.
Анализ постановки задачи
Исходным данным для решения задачи является переменная
типа string, в которой хранится исходный текст st.
Введем обозначения объектов программы:
st1- переменная, в которой будем хранить текущее слово из
текста; st2- переменная, в которой будем хранить самое
длинное слово в тексте; i- переменная целого типа,
обозначающая номер текущей литеры; max- максимальное
количество букв в слове.
Для решения задачи воспользуемся следующим алгоритмом:
Введем исходный текст.
Собираем текущее слово в дополнительную переменную
(st1).
Определяем максимальную длину слова.
Выводим результат.
10

11.

Основная программа
var s, stt2: string;
begin
writeln(‘Введите предложение’);
readln(s);
max_slovo(s, stt2);
writeln(‘Самое длинное слово в тексте ', stt2);
end.
11

12.

Подпрограммы
PROCEDURE slovo(stt: string; j:integer; var stt1: string);
BEGIN
stt1:='';
while (stt[j]<>‘ ') and (stt[j]<>‘ . ') do begin
stt1:=stt1+stt[j];
inc(j)
end;
END;
PROCEDURE max_slovo(st: string; var st2: string);
VAR max, i : integer;
st1 : string;
BEGIN
i:=1;
max:=1;
while i<=length(st) do begin
slovo(st, i, st1);
if length(st1)>=max then begin
max:=length(st1);
st2:=st1
end;
i:=i+length(st1)+1;
end;
END;
12
English     Русский Правила