Заполнение строки одним символом


Строку можно заполнить одним символом:

Var

В качестве 1-го параметра можно задать номер элемента строки, с которого надо начинать заполнение
s: string;

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;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.013 сек.