Преобразование строк

1. Str (x[:f[:n]],s)

Процедура str служит для преобразования числовых значений в строковые.

a) X:=1500; str (x:6,s); {(s=' 1500'}

b) X:=4.8e+03; str (x:10,s); {s=' 4800'}

c) X:=7.77; str(x:8,s); {s=’ 7.77E+00'}

d) Str(7.77:-8:2,s);{s=’7.77 '}

e) Str(7.77:8:2,s); {s=' 7.77'}

Если формат с фиксированной точкой ограничивает число знаков в дробной части, то оно округляется при преобразовании, но само значение числа не изменяется.

Str(1.234567:6:4,s); {s='1.2346'}

2. Val (s,x,errcode) – преобразует строковое значение s в величину целого или вещественного типа и помещает результат в X. Если преобразование возможно, то var errcode =0, в противном случае errcode будет содержать номер позиции первого ошибочного символа.

S1:='555'; val (s1,p,w); {p=555; w=0}

s2:='23.345'; val (s2,p,w); {p=23.345; w=0}

s3:='34гг2'); val (s3,p,w); {p=???; w=3}

Примеры использования строк

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

program z1;var s: set of char; { множество символов } inp, res: string;{ входная и результирующая строки } i: byte;begin s:=[]; { чистим множество } res:= ''; { чистим результирующую строку } writeln('Введите строку'); readln(inp); for i:= 1 to length(inp) do { цикл по символам до конца строки } if not(inp[i] in s) then { если символ не принадлежит множеству s } begin res:= res+inp[i];{ формируем рез. строк у} s:= s+[inp[i]]; { формируем множество } end;end.

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

program z2;var inp, res: string; i: byte;begin res:= ''; for i:= 1 to length(inp) do begin k:= pos(inp[i],res); { поиск символа в рез. строке } if k<>0 then delete(res,k,1); { если символ найден, удаляем его из рез. строки } res:= res+inp[i]; {формирование рез. строки } end;end.

Задача 3.

Удалить среднюю букву при нечетной длине строки и две средние буквы при четной длине строки.

Procedure MiDel (Var st: String);

Var

k: Byte;

Begin

k:=Length(st);{текущая длина строки}

If odd(k) then Delete (st, k Div 2+1, 1){если нечетная длина строки, удаляем один символ}

Else

Delete (st, k Div 2, 2);{если четная длина строки, удаляем два символа}

End;

Задача 4.

Заменить все вхождения подстроки w в строке st на подстро­ку V.

Procedure Ins (w, v:String;Var st: String);

Var

k: Byte;

Begin

While Pos (w,st)<>0 Do {пока находим подстроку w в строке st}

Begin

k:= Pos(w,st); {номер позиции начала подстроки w в строке st}

Delete(st,k,Length(w));{удаляем подстроку w}

Insert (v,st,k); {вставляем подстроку v}

End;

End;

Задача 5.

Подсчитать сумму цифр, встречающихся в строке.

Function Sum(st: String): Integer;

Var

i, k, d, s: Integer;

Begin

s:=0; { счетчик суммы цифр}

For i:=l To Length (st) Do

Begin

Val (st[I],d,k);{преобразование символа в число}

If k=0 Then s:=s+d;{ при успешном преобразовании наращиваем счетчик суммы}

End;

Sum: =s;

End;

Текстовый режим


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: