пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

pogromirovanie:
» sooqa
Уася:
» History motherfuckers

Строковый тип. Процедуры и функции для обработки строк. (пример программы обработки текста с использованием строк).

Строки

Символьные массивы

Var s: array [1..N] of char;

  1. Можно присваивать значения строковых констант (длины должны совпадать ).

при N=12 s:=‘Turbo Pascal’;

при N=5 s:=‘AA BB’; или s:= #65#65#32#66#66

  1. Операция конкатенации +

Var s1: array [1..5] of char;

s2: array [1..6] of char;

s1:=‘Turbo’; s2:=‘Pascal’;

Writeln(s1+ ‘ ’+s2);

Cтроки
Var

  1. s: string;
  2. s: string [N];

S[0]-фактическая длина строки в литерном виде

Ord( S[0])- числовое значение дл. строки.

  1. Сравнение s:=‘ABCDEF’; s:=‘ABCDFG’;
  2. Строки можно обрабатывать посимвольно: s[i]
  3. S:= <строковое выраж.> ;
  4. Операция + s:=s1+s2;
    Var s:string[10];

S1,s2: string[7];

Begin s1:=‘123456’; s2:=‘ABCDEF’; s:=s1+s2;

(s:=‘123456ABCD’)

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

ReadLn(S); Read(S);

WriteLn(S); Write(S).

При вводе строк с клавиатуры следует учитывать, что длина буфера ввода составляет 128 символов. Поэтому при использовании оператора ReadLn(S) в строку S может быт занесено не более 127 символов.

Процедуры для обработки строк

Delete(S,N,M) - процедура удаления из строки S некоторой ее части.
Здесь S - строковая переменная,

N, М- константы, переменные или выражения любого целого типа.

Процедура производит следующее действие: из строки S, начиная с N-ой позиции удаляется М символов. Результат сохраняется в строке S. Если N > Length(S), то удаления символов не произойдет. Если М + N > Length(S), то

удалится конец строки, начиная с N-ой позиции.

Insert(Sl, S, N) - включение строки S1 в S, начиная с N-ой позиции. Результат

сохраняется в S.

Здесь

S - строковая переменная;

S1 - строковая константа, переменная или выражение;

N - константа, переменная или выражение любого целого типа.

Str(X,S) - перевод числа Х в строку S.

Здесь
X -целое или действительное число (с форматом или без него),

S - строковая переменная.

Val(S, X, К) - перевод строки S в число X.

Здесь

S - строковая константа, переменная или выражение;

X - числовая переменная;

К - параметр целого типа, фиксирующий наличие ошибки

 

При работе со строками следует помнить, что если строка заполнена или преобразована по байтам (т.е. посимвольно) без использования специальных процедур и функций или операции "+", то содержимое нулевого байта строки не меняется, т. е. фактическая длина строки остается прежней.

Пусть

VAR S: string;

и 40 байт в S занято символами, т.е.K:=Length(s) дает40.

Если использовать оператор

for I: = 1 to 5 do S[40+I] :='*';

дополняющий строку пятью символами "*",

то К := Length(S) ?

Для того, чтобы фактическая длина строки стала 45, следует

использовать

S[0] : = chr(45).

Пример. Дана строка символов. Группы символов, разделенные пробелами, будем называть словами. Найти наибольшую длину слов палиндромов («перевертышей»). Если палиндромов нет, то ответом должно быть число 0.

PROGRAM Example_JJ;

LABEL 1;

VAR

S: string; {исходная строка}

I_begin, L : byte; {начало текущего слова, его длина}

L_max : byte; {наибольшая длина слов-палиндромов}

N: byte; {длина строки}

I: byte; {номер текущего символа}

J: byte;
BEGIN
        Writeln('Bвeдume строку символов');

Readln(S);

N: = Length(S);

L_max: = 0;

I: = 1;

While I<=N do
                           begin

I_begin : = I; { начало слова}

while (S[I] <>' ' ) and (I<= N) do

Inc(I); {просмотр слова}

L := I - I_begin; {длина слова}

{проверка: слово — палиндром}

for J:= 1 to L div 2 do

if S[I_begin +J-1] <> S[I_begin + L-J] then goto 1;

if L_max < L then L_max := L;

{пропуск пробелов}

1: while S[I] =' ' do Inc(i);

end;
Writеln('Максимальная длина =' , L_max);
Readln
END.


27.01.2014; 07:07
хиты: 597
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь