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

Задача

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

Пояснение к задаче и алгоритм решения

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

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

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

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

Исходный код на языке программирования Pascal

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.

Пример(ы) выполнения программы на языке Pascal

Введите число: -98
Количество разрядов = 2

Исходный код на языке программирования C

#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;
}

Пример(ы) выполнения программы на языке C

3543
4

Исходный код на языке программирования Python

def digits(n):
    i = 0
    while n > 0:
        n = n//10
        i += 1
    return i
 
num = abs(int(input('Введите число: ')))
print('Количество разрядов:', digits(num))

Пример(ы) выполнения программы на языке Python

Введите число: 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

Исходный код на языке программирования Basic

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

Пример(ы) выполнения программы на языке Basic

-7823342
7

Тема

Функции

Уровень сложности

Простой

Дата публикации

Комментарий