Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


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




Лабораторная работа № 11

 

 

ОБРАБОТКА СИМВОЛОВ И СТРОК СРЕДСТВАМИ

ЯЗЫКА Turbo Pascal

Цель:

Получить практические навыки работы с символьной информацией с использованием средств Turbo Pascal.

 

Общие сведения

ОБРАБОТКА СИМВОЛЬНОЙ ИНФОРМАЦИИ

Строка — это последовательность символов. При использовании в выражениях строка обязательно заключается в апострофы. Количество символов в строке (длина строки) может динамически изменяться от 0 до 255. Определение строкового типа устанавливает максимальное количество символов, которое может содержать строка.

 

Формат описания:

 

1-ый способ:

Type

имя типа = string [максимальная длина строки];

Var

идентификатор: имя типа;

 

2-ой способ:

Var

идентификатор: string [максимальная длина строки];

 

Длина строки может не указываться, в этом случае принимается максимально возможная длина строки, равная 255 символов.


 

Пример:

Type

Stroka:string[50];

Var

St:Stroka;

St1:string;

St2:string[25];

Строку можно описать с помощью типизированной константы:

Сonst

St:string=’Сегодня хорошая погода!’;

 

Строковые выражения

 

Выражения, в которых операндами служат строковые данные, называются строковыми выражениями. Они состоят из строковых констант, переменных, указателей функций и знаков операций. Над строковыми данными допустимы операция сцепления и операции отношения.

 

Операция сцепления (+) применяется для сцепления нескольких строк в одну результирующую строку.

Например:

 

Выражение Результат
'E'+'C'+' 18' +'40' 'EC 1840'

 

Длина результирующей строки не должна превышать 255.

 

Операции отношения (=, <>, <, >, >=, <=) проводят сравнение двух строковых операндов и имеют приоритет более низкий, чем операция сцепления, т.е. вначале всегда выполняются все операции сцепления, если они присутствуют, и лишь потом реализуются операции отношения. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в стандартной таблице обмена информацией. Результат выполнения операций отношения над строковыми операндами всегда имеет булевский тип и принимает значение True, если выражение истинно, и False, если выражение ложно.


 

Например:

 

Выражение Результат
'COSM1'<'COSM2' True

 

Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки считаются равными, если они полностью совпадают по длине и содержат одни и те же символы.

Для присваивания строковой переменной результата строкового выражения используется оператор присваивания (:=).

Допускается смешение в одном выражении операндов строкового и литерного типа. Если при этом литерной переменной присваивается значение строкового типа, длина строки должна быть равна единице, иначе возникает ошибка выполнения.

Для обработки строковых данных используются стандартные процедуры и функции.

 

Процедуры

 

Delete (St, Poz, N) — удаление N символов строки St, начиная с позиции Poz.

 

Значение St Выражение результат
'абвгде' Delete (Str, 4, 2) 'абве'

 

Insert (Str1, Str2, Poz) — вставка строки Str1 в строку Str2, начиная с позиции Poz.

 

Пример:

Var S1, S2, S3: string[11];

...

S1:=' EC ';

S2:='ЭВМ1841';

S3:=Insert (S1, S2, 4);

В результате выполнения последнего выражения значение строки S3 станет равным 'ЭВМ ЕС 1841'.

 

Str (I, St) — преобразование числового значения величины I (целого или вещественного типа) и помещение результата в строку St. После I может записываться формат, аналогичный формату вывода. Если в формате указано недостаточное для вывода количество разрядов, поле вывода расширяется автоматически до нужной длины.

 

Значение I выражение Результат
  Str (I:6, St) ' 1500'

 

4) Val (St, I, Cod) — преобразует значение St в величину целочисленного или вещественного типа и помещает результат в I. Значение St не должно содержать незначащих пробелов в начале и в конце. Cod — целочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение Cod равно нулю, если ошибка обнаружена (например, литерное значение переводится в цифровое), Cod будет содержать номер позиции первого ошибочного символа, а значение I не определено.

 

Значение St выражение Результат
'1450' Val (St, I, Cod) 1450 Cod=0

 

Функции

 

Copy (St, Poz, N) — выделяет из строки St подстроку длиной N символов, начиная с позиции Poz.

 

Значение St Выражение Результат
'ABCDEFG' Copy (St, 2, 3) 'BCD'

 

Concat (Str1, Str2,..., StrN) — выполняет сцепление строк Str1, Str2,..., StrN в том порядке, в каком они указаны в списке параметров.

 

Выражение результат
Concat ('AA', 'XX', 'Y') 'AAXXY'

 

Length (St) — вычисляет длину в символах строки St.

 

Значение St Выражение результат
'123456789' Length (St)  

 

Pos (Str1, Str2) — обнаруживает первое появление в строке Str2 подстроки Str1. Результат имеет целочисленный тип и равен номеру той позиции, где находится первый символ подстроки Str1. Если в Str2 подстроки Str1 не найдено, результат равен 0.

 

Значение Str1 Выражение результат
'abcdef' Pos('de', Str1)  
'abcdef' Pos('r', Str1)  

 

Примеры сортировки:

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

program sorta;

type

indata=string[80];

mas=array[1..80] of indata;

var

st:mas;

i,n:integer;

Procedure sortstring(var inm:mas; n:integer);

Procedure insort(L,R:integer;var M:mas);

var

a,b:indata;

i,j:integer;

begin

i:=L;

j:=R;

a:=m[(l+r)div 2];

repeat

while m[i]<a do i:=i+1;

while A<m[j] do j:=j-1;

if i<=j then

begin

b:=m[i]; m[i]:=m[j];

m[j]:=b; i:=i+1; j:=j-1;

end;

until i>j;

if l<j then insort(l,j,m);

if l<r then insort(i,r,m);

end;

begin

insort (1,n,inm);

end;

begin

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

readln (n);

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

for i:=1 to n do

readln (st[i]);

Writeln ('Исходный массив строк:');

for i:=1 to n do

writeln (st[i]);

sortstring(st,n);

Writeln ('Отсортированный массив строк');

for i:=1 to n do

writeln (st[i]);

end.





Поделиться с друзьями:


Дата добавления: 2016-12-04; Мы поможем в написании ваших работ!; просмотров: 979 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Своим успехом я обязана тому, что никогда не оправдывалась и не принимала оправданий от других. © Флоренс Найтингейл
==> читать все изречения...

2396 - | 2210 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.