Статьи /  Pascal /  
Pascal Операторы ввода и вывода

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

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


Объявление строки, объявление длины строки.

var ИмяСтроковойПеременной : string[N]; {N – значение от 1 до 255}
var a:string[10];
    b:string[255]; //аналогично записи b:string;

N является объявленной длинной строки. Строковой константой является последовательность символов, заключенных в апострофы.

'abcdef', '1234fd34’;

Если строковой переменной присваивается значение строковой const, большей длины, остальные символы отсекаются. Например:

A := '1234567';
Write(a); //будет выведено 1234

Инициализация строки, реальная длина строки.

var s1, s2, s3 : string[80];
s1 := 'abcd'; s2 := 'ab1234cd'; s3 := ' ';

Несмотря на то, что объвленная строка равна 80, реальная длина первой строки 4, второй = 9и третьей строки равно нулю. Информация о реальной длине строки содержится в закодированном виде в элементе s[0];

K := ord(s[0]);

Для каждой из строк s1, s2, s3 целая переменная k принимает значение 4, 9, 0. Доступ к элементам строки производится через индекс элемента, значение которого может изменяться от единицы до значения равного реальной длине строки. Комментарий: обмен между элементами строки и другие операции с элементами возможны только в пределах реальной строки. Строку можно сформировать из последовательности символов, введенных с клавиатуры. Пусть объявлено:

var i: integer;
    c:char;
    s:string[80];
begin
    s := '';
    for i := 1 to 10 do begin
	    Write(i, ': '’); readln(c);
	    s := s + c;
    end;
    writeln(s);
end.

При формировании строки ее реальная длина изменяется от 0 до 10.

Сложение строк

мar s1, s2, s3 : string;
begin
    s1 := ‘1234’; s2 := ‘abcd’;
    s3 := s1 + s2;
    writeln(s3); //’1234abcd’
end.

Сравнение строк.

Строки можно сравнивать с помощью оператора if.

If s1 = s2 then 

строки считаются равными, если имеют одинаковую длину и одинаковые соответствующие элементы

Процедуры и функции, использующиеся при обработке строк.

var s, subS : string;
    len, k, count, code : integer;
    r : real;

Формирование двумерного массива.

Randomize;
for i := 1 to n do
for j := 1 to n do
    a[i,j] := 1 + random(50);

Length – функции для определения реальной длины строки.

Len := length(s);
{результат выполнения данной функции совпадает с результатом len := ord(s[0]);}

Insert – процедура вставки подстроки subS в строку s.

Insert(subS, s, k);

, где K – номер символа строки, с которого будет произведена вставка.

Delete – процедура удаления символов из строки.

Delete(s, k, count);

, гдеk – номер элемента строки s, начиная с которого производится удаление символов
сount – количество удаляемых элементов

Copy – функция для копирования части строки

subS := copy(s, k, count);

, где subS – подстрока строки s
k – номер элемента с которого производится копирование символов

Pos – функция определяющая номер элемента строки s. Начиная с которого подстрока subS входит в строку s.

K := pos(subS, s);

Если подстрока subS не входит в строку S, то значение k равно нулю.

Val – процедура для преобразования строки в целое длинное, целое и вещественное число.

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

val(s, k, code);
val(s, r, code);

Если преобразование произведено успешно, то переменной code присваивается значение 0, в противном случае переменная code становится равной порядковому номеру элемента строки , препятствующему преобразованию.

Str – преобразование числа в строку

Str(k, s);
str(r:8:3, s);
// число преобразуется с учетом формата длины строки, 3 знака после точки в строке. 

Задача: вводится строка символов. Произвести в этой строке циклический сдвиг символов вправо на одну позицию. При циклическом сдвиге вправо все символы, кроме последнего сдвигаются вправо, а последний символ занимает первое место.

Program strings;
uses crt;
var c:char;
    len:integer;
    s:string;
begin
    clrscr;
    write(‘s = ’); readln(s);
    len := length(s); {определение длины введенной строки}
    c := s[len]; {читается последний символ строки}
    delete(s, len, 1); {удаляется последний символ строки}
    insert(c, s, 1);
    s := s + c;
    writeln(s);
    readln();
end.


Яндекс.Метрика