Определить количество разрядов числа

Написать функцию, которая определяет количество разрядов введенного целого числа.

Чтобы программно посчитать количество разрядов числа, необходимо последовательно его делить нацело на 10, пока это число не станет равным нулю. При этом считать количество делений. Например, дано число 345. После первого деления останется 34, после второго - 3, после третьего - 0. Таким образом, мы видим, что количество делений равно количеству разрядов числа.

Для реализации данного алгоритма следует использовать цикл "пока" (while). Условием его выполнения является неравенство числа нулю. Хотя, если вводятся только положительные числа или перед этим отрицательное число превращают в положительное, в условии может быть "больше нуля".

Перед циклом вводится переменная-счетчик (например, i), которой присваивается значение 0 и которая при каждом делении заданного числа внутри цикла увеличивается на единицу. После завершения деления именно ее значением будет определяться количество разрядов числа.

Поскольку надо написать функцию, то скорее всего эта функция должна принимать заданное число, а возвращать количество разрядов.

var num: longint;
 
function digits (n:longint): byte;
    var i: byte;
    begin
        i := 0;
        while n > 0 do begin
            n := n div 10;
            i := i + 1
        end;
        digits := i
    end;
 
begin
    write ('Введите число: ');
    readln (num);
    if num<0 then num:=abs(num);
    writeln ('Количество разрядов = ', digits(num));
end.
Введите число: -98
Количество разрядов = 2
#include <stdio.h>
int digits (int);
 
main() {
    int num;
    scanf("%d",&num);
    printf("%d\n", digits(num));
}
 
int digits(int n) {
    int i;
    if (n < 0) n = -n;
    while (n > 0) {
        n = n/10;
        i += 1;
    }
    return i;
}
3543
4
def digits(n):
    i = 0
    while n > 0:
        n = n//10
        i += 1
    return i
 
num = abs(int(input('Введите число: ')))
print('Количество разрядов:', digits(num))
Введите число: 65098234
Количество разрядов: 8
алг колич_разрядов
нач
  цел num
  ввод num
  вывод разряды(num)
кон
 
алг цел разряды(цел n)
нач
  цел i, m
  m := n
  i := 0
  если m < 0 то m := -m всё
  нц пока m > 0
    m := div(m,10)
    i := i+1
  кц
  знач := i
кон
-562
3
input num
gosub digits
end
 
digits:
        if num < 0 then num = abs(num)
        i = 0
        while num > 0
                num = num \ 10
                i = i + 1
        endwhile
        print i
return
-7823342
7

Комментарий