Функция, определяющая количество значащих цифр в записи числа - Turbo Pascal
Формулировка задачи:
Напишите функцию, которая имеет один целочисленный параметр и вырабатывает значение, равное числу значащих цифр в записи этого параметр.(Например для параметра -0183 значение функции должно быть равно 3)
Решение задачи: «Функция, определяющая количество значащих цифр в записи числа»
textual
Листинг программы
function TrimLeftZeroes(x: LongInt): Longint;
var
s: string;
k: LongInt;
neg: boolean;
err: integer;
begin
str(x, s);
neg := s[1] = '-';
if neg then
delete(s, 1, 1);
while s[1] = '0' do
delete(s, 1, 1);
k:=length(s);
{ if neg then
s := '-' + s;
val(s, k, err);}
TrimLeftZeroes := k;
end;
begin
writeln(TrimLeftZeroes(-000001234));
end.
Объяснение кода листинга программы
- Функция
TrimLeftZeroesпринимает один аргумент типаLongIntи возвращает результат типаLongInt. - В начале функции объявляются переменные
s,k,negиerr. Переменнаяsтипаstringиспользуется для хранения строкового представления числа, а переменнаяkтипаLongIntбудет хранить длину строкиs. Переменнаяnegустанавливается в значениеtrue, если первая цифра числа равна '-', и вfalseв противном случае. Переменнаяerrтипаintegerбудет использоваться для обработки ошибок. - С помощью оператора
str(x, s)числоxпреобразуется в строку и сохраняется в переменнойs. - Затем проверяется, равно ли значение первой цифры числа '-'. Если это так, то с помощью оператора
delete(s, 1, 1)удаляется первый символ из строкиs. - Далее, пока первый символ строки
sравен '0', с помощью оператораdelete(s, 1, 1)удаляется первый символ. - После этого вычисляется длина строки
sс помощью оператораlength(s). - Если значение переменной
negравноtrue, то к строкеsдобавляется символ '-'. - В конце функция возвращает значение переменной
k. - В основной части программы вызывается функция
TrimLeftZeroesс аргументом-000001234и результат выводится на экран.