Лекция 17.Функции преобразования строковых величин. автор: Садовский Ефим Моисеевич1. Повторение. Строковые величины. Замена символов. Подсчет количества символов. Накопление литерных величин. Цикл While. 2. Функции преобразования строковых величин. Многие операции с числами гораздо проще выполнять, если предварительно их перевести в строковую величину. Для этого в Паскале используют стандартные процедуры Str и Val. ВНИМАНИЕ! До этого дня мы в программа использовали функции, которые записывались справа от знака присваивания (sqrt(x), length(x), a mod b и др.) Процедура в отличии от функции – это отдельный оператор, который не нуждается ни в знаках присваивания, ни в дополнительных конструкциях языка. После процедур ставится точка с запятой. Примеры процедур: readln(x), writeln('X='). STR(X,S); – процедура преобразования целого числа Х в строковую величину S. STR(X:0:2,S); – процедура преобразования действительного числа Х (Х-real) в строковую величину S. Заметим, что при преобразовании действительных чисел необходимо использовать форматированный вид действительного числа - X:0:2, где первое число удобно всегда ставить 0, а второе - количество знаков после запятой. VAL(S,X,K); - процедура преобразования строковой величины S в число Х. K – признак, переменная ЦЕЛОГО типа, которая остается равна 0, если преобразование удалось или, если преобразование не состоялось, ей присваивается номер первого символа, который не удалось преобразовать. Например, после выполнения процедуры: VAL('35',X,K); - X=35,K=0 S:='3.4'; VAL(S,X,K); - S='3.4', X=3.4, K=0 S:='3:4'; VAL(S,X,K); - S='3:4', X не определено, K=2 С числами в виде строки удобно: - заменять цифры на указанные; - подсчитывать количество цифр в числе; - подсчитывать количество указанных цифр; - находить сумму цифр; - менять цифры местами (зная их порядковые номера); С числами в виде строки нельзя: - выполнять арифметические операции; - вычислять значение математических функций.
Пример 1. С клавиатуры вводится набор символов. Можно ли сказать, что это число?Program p1;
var s:string;
k:integer;
x:real;
begin
write('Введите набор символов: ')
readln(s);
val(s,x,k);
if k=0 then writeln('Введено число!')
else writeln('Введенный набор символов - не число!')
end. Пример 2. Вычислить сумму цифр целого числа.Program p2;
var s:string;
x,sum,i,k:integer;
begin
write('Введите целое число =')
readln(s);
sum:=0;
for i:=1 to length(s) do
begin
val(s[i],x,k);
sum:=sum+x;
end;
writeln('Полученная сумма: ',sum);
end. Обратите внимание на то, что исходное число мы вводим как строковую величину, а затем процедурой VAL преобразуем каждый символ, то есть каждую цифру этой строковой величины в число, которое прибавляем к предыдущей сумме. Пример 3. С С клавиатуры вводится целое число. Возведите его в квадрат и затем замените все цифры в записи полученного числа, большие пяти, на единицы.Program p3;
var s:string;
x,n,sum,i,k:integer;
begin
write('Введите целое число =')
readln(x);
n:=x*x;
str(n,s);
for i:=1 to length(s) do
if s[i]>'5' then s[i]:='1';
val
writeln('Полученное число: ',s);
end. 3. Решение задач.Pascal. 1. С клавиатуры вводятся два целых числа. Сколько раз в записи их суммы встречается цифра 1? 2. С клавиатуры вводится целое число. Запишите его наоборот (справа налево) и результат умножьте на 3. 3. С клавиатуры вводится целое число N (N>1000). Замените вторую и последнюю цифры на 3. Результат увеличьте в два раза. Сколько в полученном числе шестерок?
|