Как найти количество цифр в натуральном числе

Цитата
Сообщение от GetHelp
Посмотреть сообщение

тоже самое что n = n / 10;

Не совсем. Результат тот же, но /= — не сокращение, а одна операция, деление и последующее присваивание — две через временную (ударение на первую гласную) вспомогательную величину. На интеле так и так будет создана временная величина, хранимая в регистре общего назначения до использования в операторе присваивания, но в принципе

означает вариант, когда её существование предусмотрено исходником, а в

временная величина — хвост особенностей системы команд. Поэтому если n уже находится в регистре, но дальнейшая оптимизация не выполнена, то

даст копирование n в другой регистр, потом

и копирование этого регистра назад. А в худшем случае можно затеять ещё и возню с промежуточным сохранением частного в буфер в кэше/оперативе. Качественная оптимизация есть оптимизация до

, тогда если n уже находится в регистре, то временная величина вообще не будет создана. В других системах команд могло бы быть и иначе.

Описание задачи

Программа принимает число и выводит количество цифр в нем.

Решение задачи

  1. Берем значение целого числа и записываем его в переменную.
  2. Используем цикл while и при помощи оператора целочисленного деления «уничтожаем» каждую цифру числа начиная с последней, а при каждой итерации цикла специально созданную переменную (так называемый счетчик цикла) увеличиваем на единицу. После того как введенное в начале число станет равным 0, цикл прекратит свою работу.
  3. Выводим значение этого счетчика на экран.
  4. Конец.

Исходный код

Ниже дан исходный код для подсчета количества цифр в данном числе. Результаты работы программы также даны ниже.

n = int(input("Введите число:"))
count = 0
while(n > 0):
    count = count + 1
    n = n // 10
print("Количество цифр равно:", count)

Объяснение работы программы

  1. Записываем введенное пользователем число в переменную n.
  2. Задаем переменную count и инициируем ее значением 0.
  3. Используем цикл while и при помощи оператора целочисленного деления «уничтожаем» каждую цифру числа начиная с конца.
  4. При каждой итерации цикла переменная count увеличивается на 1.
  5. Как только цифры в числе заканчиваются и число n становится равным 0, цикл прекращает свою работу.
  6. Выводим переменную count на экран.

Результаты работы программы

Пример 1:
Введите число:123
Количество цифр равно: 3
 
Пример 2:
Введите число:1892
Количество цифр равно: 4

Примечание переводчика

Надо заметить, что опять эту задачу можно решить намного короче, если использовать методы строк.

print("Количество цифр равно:", len(input("Введите число:")))

Здесь введенное число принимается как строка и мы просто выводим ее длину.

Мой код проходит по всем тестам на 90%, не проходит один тест.
Проблему почему не проходит на все 100 — не нашёл..

Условие: Найти количество цифр заданного целого числа number.

Пример: вводим число 37 должно вывести число 2.

Код:

#include <iostream>

int main() {
    long long int number = 0;
    int result = 0;
    std::cin >> number;
    while(number != 0) {
        number /= 10;
        result++;
    }
    std::cout << result << "n";
}

insolor's user avatar

insolor

45.6k16 золотых знаков54 серебряных знака95 бронзовых знаков

6

Почти наверняка в том единственном тесте вводится 0.

Делать условие именно на то, что юзер введёт цифру 0, и нужно вывести 1. Както колхозно, как можно реализовать без етого?

Делать отдельно условие нормально, но если есть желание сделать без условия, то можно и без него:

cin >> number;

int result = 1;
while (number /= 10) ++result;

cout << result;

ответ дан 5 мар 2022 в 10:17

Qwertiy's user avatar

QwertiyQwertiy

121k24 золотых знака121 серебряный знак291 бронзовый знак

3

Если вводите с консоли, то и не нужно рассматривать последовательность цифр как число. Можно просто читать и «выбрасывать» символы_цифры, с увеличением счетчика:

int res{};         
while (isdigit(getchar())) ++res;
printf("%d", res);

Вариантов решения много.
Задание должно четко выразить что критично и каким образом задается объект. Потому что «задано число» наталкивает написать функцию с целочисленным аргументом, а пример рождает вопрос «откуда вводится?»…

ответ дан 5 мар 2022 в 10:23

AR Hovsepyan's user avatar

AR HovsepyanAR Hovsepyan

15.8k3 золотых знака13 серебряных знаков30 бронзовых знаков

2

Узнай цену своей работы

Формулировка задачи:

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

Код к задаче: «Найти количество цифр в натуральном числе»

textual

Листинг программы

var
a:longint;
n:integer;
begin
readln(a);
n:=0;
while a>0 do
begin
a:=a div 10;
inc(n);
end;
writeln(n);
end.

Полезно ли:

15   голосов , оценка 4.067 из 5

Похожие ответы

  1. Найти произведение чётных делителей натурального числа
  2. Определить наибольшую цифру введенного натурального числа
  3. Определить количество трехзначных чисел, сумма цифр которых простое число
  4. Функция, определяющая количество значащих цифр в записи числа
  5. Составить из имеющихся цифр максимально возможное число
  6. Составить из имеющихся цифр максимально возможное число
  7. Массив: Найти количество одинаковых значений в массиве.
  8. В целочисленном массиве найти первое с конца нечётное число
  9. Найти натуральные числа, меньшие чем MAXINT, такие , что они равны сумме факториалов цифр, из которых состоят
  10. В натуральном числе n поменять местами порядок цифр для получения наибольшего числа
  11. Найти произведение и количество всех целых чисел, расположенных между двумя заданными числами

Способы найти количество цифр в числе -13

Алгоритмы, JAVA


Рекомендация: подборка платных и бесплатных курсов Java — https://katalog-kursov.ru/

С большой вероятностью можно предположить, что у каждого программиста была хоть раз такая задача. Есть много способов для нахождения количества цифр. В статье будут представлены несколько функций от самых банальных, и не очень.

1. Длина строки

Довольно банальный способ это нахождение длины строки. Это не самый быстрый способ, но для очень простых задач подходит.

    public int getCountsOfDigits(long number) {
        return String.valueOf(Math.abs(number)).length();
    }

2. Цикл с делением

Распространенный способ, скорость которого линейно зависит от длинный числа.

    public int getCountsOfDigits(long number) {
        int count = (number == 0) ? 1 : 0;
        while (number != 0) {
            count++;
            number /= 10;
        }
        return count;
    }

3. Десятичный логарифм и округление

Логарифм работает за константное время, преимущество которого на больших числах.

public static int getCountsOfDigits(long number) {
   return(number == 0) ? 1 : (int) Math.ceil(Math.log10(Math.abs(number) + 0.5));
  }

Можно использовать не только Math.ceil, это лишь один из вариантов использования логарифма.

4. Сравнение

Быстрый, но не практичный способ из-за количества кода только для int ушло 38 строк. Конечно найдутся умельцы которые смогут сделать красивее, и понятней. Не буду оставлять код для long, а оставлю для int, но думаю принцип ясен.

Код

    public static int getCountsOfDigits(int n) {
        if (n < 100000) {
            if (n < 100) {
                if (n < 10) {
                    return 1;
                } else {
                    return 2;
                }
            } else {
                if (n < 1000) {
                    return 3;
                } else {
                    if (n < 10000) {
                        return 4;
                    } else {
                        return 5;
                    }
                }
            }
        } else {
            if (n < 10000000) {
                if (n < 1000000) {
                    return 6;
                } else {
                    return 7;
                }
            } else {
                if (n < 100000000) {
                    return 8;
                } else {
                    if (n < 1000000000) {
                        return 9;
                    } else {
                        return 10;
                    }
                }
            }
        }
    }

Рейтинг выглядит так:
1. Сравнения (показывают лучший результат)
2. Логарифм
3. Деление
4. String (наихудший результат)

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти электронный договор ростелеком
  • Как найти боевые ходули
  • Как найти площадь полной поверхности правильного октаэдра
  • Как найти общую проводимость
  • Как составить жалобу на классного руководителя

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии