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;
Текстовый режим