Как узнать количество разрядов в числе 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’е можно было вводить только цифры и минус
- Программа для отыскания заданного количества пар дружественных чисел