Перейти к содержимому

Как узнать количество разрядов в числе c

  • автор:

Как узнать количество разрядов в числе c

Уважаемые программисты подскажите как исправить ошибки в поей программе. она должна считать количество цифр заданного числа

#include #include int schet(int n, int m) < if((n%10)==0) < schet=1; >else < n=n/10; schet++; >return schet; >; void main()

Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
хм, много ошибок. как вариант:

#include #include int schet(int n) < int count = 1; while ( n = n / 10 ) count++; return count; >int main()

Регистрация: 24.05.2010
Сообщений: 9

я понимаю ошибок много просто надо написать именно при помощи рекуксии

и мне еще кажется надо у n тип поменять, а то у типа int маленький диапазон значений

Последний раз редактировалось Stilet; 18.06.2010 в 08:27 .
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
Сообщение от Zelenyi
я понимаю ошибок много просто надо написать именно при помощи рекуксии
а, ну так с этого надо было начинать.

int schet (int n) < return n ? 1 + schet (n/10) : 0; >
и мне еще кажется надо у n тип поменять, а то у типа int маленький диапазон значений

ммм, алгоритм от этого не поменяется, диапазон значений не принципиален

Как посчитать количество цифр в числе (число начинается на ноль)

Просто потому что если читать не строку, а число — то введете вы 00094 или 94 — в вашем x будет одно и то же число.

Отслеживать
ответ дан 12 дек 2019 в 14:36
219k 15 15 золотых знаков 119 119 серебряных знаков 230 230 бронзовых знаков

А как тогда после из него «взять» первую, вторую и последующие цифры? Мне вот например нужно чтобы цифры на парных местах додавались, на непарных перемножались и этого всего найти суму.

12 дек 2019 в 14:42

x[0] — первая цифра (как символ! чтобы получить ее числовое значение, нужно вычитать символ ноля — x[0]-‘0’ ), x[1] — вторая и так далее.

12 дек 2019 в 15:02
Как я понимаю это массив, но как вычитать символ ноля я так и не понял.
12 дек 2019 в 15:34
Я же написал: x[0]-‘0’ . Просто перенести в свой код можете? Выделить, Ctrl-C, Ctrl-V?
12 дек 2019 в 15:37

    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Количество цифр

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

Длина строки

Это очень простой вариант определения количества цифр, заключается в переводе числа в строковое представление с последующим определением длины строки.

public int CountDigitByString(int n) < return Math.Abs(n).ToString().Length; > 

Такой метод компактный и интуитивно понятный, однако он сильно проигрывает в быстродействии другим вариантам.

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

Использование десятичного логарифма для определения количества цифр в числе, позволяет производить вычисление за линейное время.

public int CountDigitsByLog10(int n) < return (n == 0) ? 1 : (int)Math.Log10(Math.Abs(n)) + 1; > 

Сравнение

Самый быстрый из приведенных методов.

private static readonly int[] Numbers = new [] < 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 >; public int CountDigitsByCompare(int n) < n = Math.Abs(n); for (var i = 0; i < Numbers.Length; i++) < if (n < Numbers[i]) < return i + 1; > > return 10; > 

Деление нацело

С использованием цикла

public int CountDigitsByDiv(int n) < var count = (n == 0) ? 1 : 0; while (n != 0) < n /= 10; count++; > return count; > 

Рекурсивно

public int CountDigitsByDivRecursive(int n) < return (n 9) ? 1 : CountDigitsByDivRecursive(n / 10) + 1; > 

Разбивка числа на отдельные цифры

Разбив число на отдельные цифры, мы получаем возможность нахождения:

  • количества цифр;
  • количества четных и нечетных;
  • количества различных(уникальных) цифр числа;
  • суммы цифр числа.
public Listint> IntToDigit(int n) < n = Math.Abs(n); var digits = new Listint>(); while (n > 0) < int digit = n % 10; n /= 10; digits.Add(digit); > return digits; > 

Количество четных

public int EvenCount(int n) < var digits = IntToDigit(n); var count = 0; foreach (var d in digits) < if (d % 2 == 0) < count++; >> return count; > //сокращенная форма записи с использованием Linq public int EvenCountLinq(int n) < return IntToDigit(n).Count(x => x % 2 == 0); > 

Количество нечетных

public int OddCount(int n) < var digits = IntToDigit(n); var count = 0; foreach (var d in digits) < if (d % 2 != 0) < count++; >> return count; > public int OddCountLinq(int n) < return IntToDigit(n).Count(x => x % 2 != 0); > 

Количество различных цифр в числе

public int CountUniqueDigits(int n) < var a = new int[9]; foreach (var d in IntToDigit(n)) < a[d]++; >var countUnique = 0; foreach (var x in a) < if (x > 0) < countUnique++; >> return countUnique; > 

Сумма цифр числа

public int SumDigits(int n) < var sum = 0; foreach (var d in IntToDigit(n)) < sum += d; >return sum; > //использование Linq сокращает запись public int SumDigitsLinq(int n) < return IntToDigit(n).Sum(); > 

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

Здравствуйте! У меня вот такой вопрос, по заданию Натуральное положительное число записано в переменную n.
Определить и вывести на экран, сколько цифр в числе n.

X@OC
вот самый простой способ

int a = 33; 
int b=0;
while(0!=(int)a)
a=(int)a/10;
b++;
>
System.out.println(b);

Похожие статьи

  • Как сделать чтобы в Edit’е можно было вводить только цифры и минус
  • Программа для отыскания заданного количества пар дружественных чисел

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *