Заполнение строки одним символом
Строку можно заполнить одним символом:
Var
В качестве 1-го параметра можно задать номер элемента строки, с которого надо начинать заполнение |
begin
Fillchar (s,10,’1’);
Процедура Fillchar имеет три параметра:
1-й задает адрес (строки) , с которого нужно начинать писать выбранный вами символ;
2-й сколько символов нужно написать;
3-й код (или изображение - в апострофах) записываемого символа
Будут выполнены следующие действия: с самого начала запишется 10 кодов символа ‘1’ (код = $31). В эти 10 байтов будет включен байт с индексом ноль, в котором хранится текущая длина строки. Что бы такого не было заполнение строки делается в два этапа:
Var
s : string;
begin
Fillchar (s[1], 10, ’1’); // 1 этап
s[0]:= #10; // 2 этап
end.
4) Стандартные функции и процедуры для работы со строками:
Length(s) – функция возвращает значение типа byte = текущей длине строки.
Concat (s1, s2, s3, ... , s10) - функциясцепления строк выполняется для заданных аргументов (сцепляемых строк) и возвращает значение типа string – сцепленную строку. При выполнении сцепления вторая строка записывается в хвост первой, третья – вв хвост второй и т.д.
Copy (str, start, len) – функция возвращает значение типа string – указанную часть строки:
str - строка, в которой выделяется подстрока.
start - позиция начала выделяемого фрагмента
len - размер выделяемого фрагмента (в символах).
ПРИМЕР. Пусть надо переставить местами левую и правую части строки.
Решение: надо выделить правую часть и добавить к ней справа (сцепить) левую часть.
Var
s: string;
begin
s:= ’abcdef’;
s:= Concat (Copy(s, 4,. 3), Copy(s, 1, 3)); //Первый вартант
или
s:= Copy(s, 4,. 3) + Copy(s, 1, 3)); //Второй вартант
Pos(s1, s2) – функциявозвращает позицию (слева направо) в строке s2, с которой в ней первый раз встречается подстрока s1. Если не встречается, то возвращается 0. Эту функцию часто используют для проверки, входит или нет подстрока в строку (если POS возвращает не 0, то входит).
Delete (s, Start, Len) - процедура которая удаляет часть строки:
s -строка, Start - начало, Len - длина
Insert (s1, s2, start) – процедуравставляет подстроку s1 в заданную строку s2, start - позиция начала с которой s1 вставляется в s2.
ПРИМЕР: пусть надо заменить вторую половину первой строки на первую половину второй.
Решение: в Паскале нет операции «заменить», но ее можно реализовать с помощью двух действий: 1) удаление (delete) и 2) вставка (insert).
s1:= ‘abcdef’;
результатам должно быть ‘abc123'
s2:=’123456’;
Выполнение:
delete(s1, 4,3); // удаляем из 1-ой строки правую (заменяемую) часть
insert( copy (s2, 1,3) , s1,4); // вставляем левую половину 2-ой строки в коней 1-ой
левая часть строки s2
5) Подпрограммы преобразования из строкового представления в числовое и наоборот:
Процедура вывода числа в строку:
Str(число [: общая ширина: дробная часть], строка);
Эта процедура предназначена для преобразования числа в строковое представление.
Параметры:
число – то, что преобразуется;
ширина - общее количество символов, которое отводится для представления числа в пределах строки. Сюда кроме цифр числа включаются а) знак «точка» (отделяет целую часть числа от дробной), б) знак числа, в) символ e (для вещественных чисел); г) знак порядка; д) порядок числа.
дробная часть - сколько знаков после точки с должно быть в изображении числа в виде строки;
строка – принимающая строка.
Str (2.35:6: 2, s); --> для данного вызова значения числа 2.35 будет следующим: s= ‘ 2.35’.
Замечание: только при указании и ширины и дробной части вещественное значение попадет в строку в формате с фиксированной точкой (иначе - в формате с плавающей точкой).
Процедура преобразования строки в число:
Val(строка, число, код_ошибки); - процедура возвращает для входной строки типа string или Pchar (с символьным представлением числа) значение этого числа в переменной число.
После выполнения процедуры в параметре код_ошибки находится номер позиции, в которой обнаруживается ошибка преобразования (если все нормально, то возвращается 0).
Чтобы не возникало ошибки преобразования содержимым входной строки может быть только строка, содержащая символы с изображением значения по правилам типа, соответствующего переменной «число».
ПРИМЕР.
Х - переменная целого типа. Следовательно, в строке s не может быть точек, пробелов, символа ‘Е’, символов букв.
ПРИМЕР.
Var
s: string;
x: Real;
i: Integer;
Begin
s:= ‘12.34’;
Val (s, x, i); // i будет равно 0, а x будет равен 12.34
s:= ‘123 ’; // Пробел вызовет ошибку преобразования строки в целочисленную переменную
Val (s, x, i);
После выполнения второй строки программы, значение i=0 (нет ошибок), т.к. ошибок при преобразовании строки в числе не будет и х= 12 .34.
После выполнения 4-й строки i будет равно 4, т.к. в 4-й позиции находится пробел, значение х будет непредсказуемо.
Замечание: наиболее часто эти две процедуры используются для того, чтобы:
- вставить изображение (символьное) числа в строку (str);
- из изображения строки выделить число (val).
Пример: пусть нужно в середину строки вставить изображение (символьное представление) числа, равного текущему году.
Var
s1, s2 : string;
i, j: integer;
begin
s1 := ’abcdef’;
i := 2016; из s2
str(i, s2); // изображение числа записали в s2 (s2 будет равно ‘2016’)
insert(s2, s1, 4); // результат s1 = ‘abc2016def’
val(copy(s2,4,4), i ,j ); // i будет равно 2016
end.
Далее - простейший ввод-вывод
Дата добавления: 2016-05-28; просмотров: 1863;