Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


ƒан массив строк. ќтсортировать его в алфавитном пор€дке.




Ћабораторна€ работа є 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; ћы поможем в написании ваших работ!; просмотров: 949 | Ќарушение авторских прав


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

Ћучшие изречени€:

Ќачинать всегда стоит с того, что сеет сомнени€. © Ѕорис —тругацкий
==> читать все изречени€...

542 - | 435 -


© 2015-2023 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.015 с.