Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
B.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
101.89 Кб
Скачать

1.2. Операции над строками.

Для строк применимы операции конкатенации (+) и сравнения.

Операция конкатенации применяется для склеивания строк. Склеивать можно какое угодно число строк, при условии, что результирующее значение ( тоже строка) будет содержать не более 255 символов. Например, s1:= '12345'; s2:= 'bacd'; s3:= 'каша'; c:= s1+s2; c1:= s2+' '+s3. Тогда переменная c получит значение '12345bacd', а переменная c1 - значение 'bacd каша'.

Если переменную c1 описать так: var c1 : string[7], то она примет значение 'bacd ка', следовательно, "лишние" символы в склеенной строке отбрасываются.

Сравнение двух строк осуществляется слева направо в соответствии с ASCII-кодами соответствующих символов. Строки равны, если имеют одинаковую длину и посимвольно эквивалентны. При сравнении строк разной длины, меньшая дополняется соответствующим числом пробелов и сравнение выполняется в обычном порядке. Если при посимвольном сравнении окажется, что один символ больше другого (его код больше), то строка, его содержащая, тоже считается большей. Остатки строк и их длины не играют роли. Любой символ всегда больше "пустого места".

Например, 'abcd' = 'abcd', 'abcd' < > 'abcde', 'abcd' < > ' abcd',

'abcd' > 'abcD', 'abcd' > 'abc', 'aBcd' < 'ab', ' ' > ''.

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

Пример. Дан текст, заканчивающийся точкой. Слова в тексте разделены пробелом. Найти и напечатать самое короткое слово в тексте (если их несколько, то напечатать все слова).

{Самое короткое слово}

program korot_slovo;

uses CRT;

type

tex_s=string[255]; st=array [1..20] of string[80];

var

s:tex_s;{введенный текст}

c:string[80]; {промежуточная переменная}

s2:st;{сформированный массив слов}

i:integer; k:integer; {счетчик количества слов}

n:integer; {длина самого короткого слова}

l:integer; {длина очередного слова}

begin

ClrScr; {очистка экрана}

writeln('введите текст'); readln(s);

{формирование массива слов}

k:=0; c:='';

for i:=1 to ord(s[0]) do

if (s[i]=' ') or (s[i]='.') then

begin k:=k+1; s2[k]:=c; c:=''  end

else c:=c+s[i];

{находим длину самого короткого слова}

n:=80;

for i:=1 to k do

begin c:=s2[i]; l:=ord(c[0]); if n>l then n:=l; end;

{вывод на экран самых коротких слов}

writeln('самые короткие слова');

for i:=1 to k do

begin c:=s2[i]; if n=ord(c[0]) then writeln(s2[i]); end

end.

Замечание. В данной программе используется директива USES, с помощью которой подключаются библиотечные модули из стандартного набора ТУРБО ПАСКАЛЯ. Эта директива может появляться в программе только один раз и должна стоять перед прочими директивами и разделами. Список библиотечных модулей записывается после слова USES через запятую:

uses CRT, Graph;

{подключены два библиотечных модуля с соответствующими именами}.

В модуле CRT реализованы специальные процедуры и функции для работы с текстовой информацией на дисплее, позволяющие: управлять текстовыми режимами, организовывать окна вывода на экран, настраивать цвета символов на экране, управлять курсором и т.д. Стандартное местонахождение модуля CRT - системная библиотека TURBO.TPL. Более подробно о процедурах и функциях модуля CRT см. в параграфе 5.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]