Цель: Освоить на практике новый тип данных – строка, научиться работать с текстом.
Теоретическая часть.
1. Понятие строки и размещение в памяти.
2. Описание строки.
3. Действия над строками. Операторы.
4. Примеры программ.
1. Определение. Строки – это структурируемый тип данных, представляющий собой последовательность из набора символов кодовой таблицы. Всего 255 символов. По устройству данный тип очень близок понятию массив.
A: string[5]
5 | О | С | Е | Н | Ь |
- строка
B: array[1..5] of char
О | С | Е | Н | Ь |
- массив из символов
В отличие от массива первый (т.е. нулевой) байт памяти содержит информацию по количеству символов в строке. Поэтому, если строка описана длиной 10 символов, то любые символы введенные с терминала или добавляемые к строке после 10 будут игнорироваться.
2. I способ
Type <название типа 1> = string[10];
<название типа 2> = string;
(до 255)
Var <идентификатор>:<название типа>;
II способ
Var <идентификатор>: string[ ];
зарезерв длина
Замечание. Если две строки А и В описаны одинаково, то разрешено присвоение A:=B. Однако сравнение двух строк разрешается посимвольно. Обращение к каждому символу в строке аналогично доступу к каждому элементу в массиве.
Var A:string;
A[1] – первый символ
A[2 – второй символ
…
A[i – I – ый символ
3. Действия над строками.
a) Можно складывать, причем сложение строк неперестановочно: . Сложение наз-ся конкатенация. Concat – равносильно сложению нескольких строк. Результат в 1 –ой строке concat(a1,a2,a3)
b) Присвоение
c) Разрешается сравнение строк, при этом учитывается номер каждого символа из кодовой таблицы.
Пример 'кот'<'котомка'
'котт' > 'кота'
'аа' < 'ааа'
'а' < 'я'
Все символы русского и латинского алфавитов имеют коды соответствующих их порядку, т.е. 'А' < 'В'
Разрешены процедуры и функции над строками.
1) Copy (st,p,n)
Из строки st копируется n символов в память, начиная с позиции p.
2) Delete (st,p,n)
Из строки st удаляется n символов, начиная с p.
3) Insert(st1,st2,p)
Вставить строку st1 в st2, начиная с позиции p.
4) Length (st)
Вычисляет длину строки st.
5) Pos (st1,st2)
Находит позицию первого появления строки st1 в строке st2.
6) Str(n,st)
Процедура перевода цел. Переменной n в строку st.
7) Val(st,n,m)
Процедура переводит содержимое строки st в целочисленную переменную n, причем m – номер ошибочного символа.
4. Составить программу, позволяющую сформировать массив из слов данного предложения. Подсчитать количество слов, начинающихся с буквы Т.
uses crt;
var
s:string;
x:char;
n,i,m:byte;
mas:array[1..10] of string;
begin clrscr;
s:='Уж небо осенью дышало';
n:=length(s);m:=1; mas[m]:=' '; {Обнуление нового слова}
for i:=1 to n do
if s[i]=' ' then begin
m:=m+1;
mas[m]:=' ';
end
else mas[m]:=mas[m]+s[i];
n:=0;
for i:=1 to m do
begin
writeln(mas[i]);
if mas[i,1] in ['T','t'] then inc(n)
end;
writeln('Количество слов, начин-ся с c T=',n);
readln;
end.
Индивидуальное задание:
1) Записать все слова строки T в одномерный массив. Подсчитать количество слов, количество букв в которых нечетно.
uses crt;
const raz=[' ',',','.',';','-',':','!','?'];
var t:string;
mas:array[1..15] of string;
i,n,m:byte;
begin clrscr;
writeln('Vvedite stroku');
readln(t);
n:=length(t); m:=1;
mas[m]:='';
for i:=1 to n do
if t[i] in raz then begin
while(t[i] in raz) do inc(i);
inc(m);mas[m]:=t[i];
end
else mas[m]:=mas[m]+t[i];
writeln;
writeln;
writeln('Massiv:');
for i:=1 to m do writeln(mas[i],' ',length(mas[i]));
n:=0;
for i:=1 to m do
if odd(length(mas[i])) then inc(n);
writeln('Kol-vo netetn slov=',n);
readln;
end.
2) Ввести строку A: string с клавиатуры. Заменить все встретившиеся строчные буквы на такие же прописные и вывести строку А после изменения.
3) Написать программу, определяющую, сколько раз встретилось заданное слово в текстовом файле, длина строки в котором не превышает 80 символов. Текст не содержит переносов слов.
Дата: 2019-12-22, просмотров: 377.