Как разделить число на цифры?
Например, дано число 123456789, нужно разделить его на отдельные цифры, 1, 2, 3, 4, 5, 6, 7, 8, 9, чтобы их потом можно было бы присвоить к какой-то переменной. И как называется сам этот процесс, чтобы поподробнее прочитать про эту функцию потом.
Ответы (12 шт):
Если честно, то мне трудно понять смысл этих строчек:
Вот тут я запутываюсь, а точнее в форматах ( % ).
Кратко описываю непонятные Вам места с форматами. Подробно можно прочитать в man 3 fprintf.
Функции семейства printf ( sprintf() , fprintf() и другие) выводят значение своих аргументов в виде последовательности символов в соответствии с форматами, передаваемыми аргументом функции в виде строки. printf() выводит символы в stdout , fprintf() — в указанный FILE * , а sprintf() — в строку (массив char ) в вашей программе.
Текст строки форматов можно разделить на собственно форматы, «управляющие» (Control) и просто символы.
Просто символы копируются на выход «как есть».
Control символы управляют выводом текста на терминал (NewLine, Tab и пр.), их записывают в форматах, начиная символом «бэкслеш» («\»). Например: \n — Newline, \t — табуляция, \g — bell (терминал пищит). Также (это по правилам записи строковых констант в С) надо писать \» для вывода кавычки. Если надо вывести сам символ «\», то его надо удвоить: \\ .
Символ «%» в строке форматов имеет особое значение. Он начинает очередной формат, который говорит, в каком виде должен быть выведен следующий аргумент и какого он типа. Например:
- %d — вывести аргумент типа int в виде десятичного числа,
- %c — вывести аргумент типа char (или младший байт int ) как символ (то есть без преобразований),
%x — вывести аргумент типа int в виде шестнадцатеричного числа
и так далее. Форматов много, они удобны. Прочтите man и пользуйтесь.
Возвращаясь к указанным Вами непонятным местам в программе:
sprintf(digs, «%d», num); сформирует в массиве digs последовательность цифр числа и переменной num в соответствии с форматом %d (то есть выводит в строку число в десятичном виде);
if (strlen(digs) > idig) проверяет, есть ли вообще цифра номер idig . Например Вы хотите вывести шестую цифру числа, а в числе (например 3) цифра всего одна.
printf («%d-th digit in %d is ‘%c’\n», idig, num, digs[idig — 1]); вывести в stdout:
- первый %d — переменную idig (номер цифры в числе) как десятичное число,
- второй %d — переменную num как десятичное число,
- %c — символ из массива digs (искомую цифру) «как есть».
Надеюсь, теперь стало понятнее. А вообще, читайте, читайте и еще раз читайте документацию.
Функция которая получает в первом параметре число из которого нужно получить определенную цифру и второй параметр какую именно цифру из числа надо получить. Возвращает нужную вам цифру. Цифру которую нужно получить отсчитывает с конца числа.
ну хз мб кому то поможет
как легче я не знаю)))). это к стати моя домашняя робота .
п.с если число х не определенно(те есть ты не знаешь сколько цифр будет) то я не знаю
Простейшая программа на Си раскладывающая любое число long на цифры.
А если просто конвертировать в std::string ?
Не зависемо от размера числа Сначала вводим число после чего программа берет последную цифру, после чего просто уберает последую цифру и повтарает.
Как разделить число на цифры?
Например, дано число 123456789, нужно разделить его на отдельные цифры, 1, 2, 3, 4, 5, 6, 7, 8, 9, чтобы их потом можно было бы присвоить к какой-то переменной. И как называется сам этот процесс, чтобы поподробнее прочитать про эту функцию потом.
12 ответов 12
Если честно, то мне трудно понять смысл этих строчек:
Вот тут я запутываюсь, а точнее в форматах ( % ).
Кратко описываю непонятные Вам места с форматами. Подробно можно прочитать в man 3 fprintf.
Функции семейства printf ( sprintf() , fprintf() и другие) выводят значение своих аргументов в виде последовательности символов в соответствии с форматами, передаваемыми аргументом функции в виде строки. printf() выводит символы в stdout , fprintf() — в указанный FILE * , а sprintf() — в строку (массив char ) в вашей программе.
Текст строки форматов можно разделить на собственно форматы, «управляющие» (Control) и просто символы.
Просто символы копируются на выход «как есть».
Control символы управляют выводом текста на терминал (NewLine, Tab и пр.), их записывают в форматах, начиная символом «бэкслеш» («\»). Например: \n — Newline, \t — табуляция, \g — bell (терминал пищит). Также (это по правилам записи строковых констант в С) надо писать \» для вывода кавычки. Если надо вывести сам символ «\», то его надо удвоить: \\ .
Символ «%» в строке форматов имеет особое значение. Он начинает очередной формат, который говорит, в каком виде должен быть выведен следующий аргумент и какого он типа. Например:
- %d — вывести аргумент типа int в виде десятичного числа,
- %c — вывести аргумент типа char (или младший байт int ) как символ (то есть без преобразований),
%x — вывести аргумент типа int в виде шестнадцатеричного числа
и так далее. Форматов много, они удобны. Прочтите man и пользуйтесь.
Возвращаясь к указанным Вами непонятным местам в программе:
sprintf(digs, «%d», num); сформирует в массиве digs последовательность цифр числа и переменной num в соответствии с форматом %d (то есть выводит в строку число в десятичном виде);
if (strlen(digs) > idig) проверяет, есть ли вообще цифра номер idig . Например Вы хотите вывести шестую цифру числа, а в числе (например 3) цифра всего одна.
printf («%d-th digit in %d is ‘%c’\n», idig, num, digs[idig — 1]); вывести в stdout:
- первый %d — переменную idig (номер цифры в числе) как десятичное число,
- второй %d — переменную num как десятичное число,
- %c — символ из массива digs (искомую цифру) «как есть».
Надеюсь, теперь стало понятнее. А вообще, читайте, читайте и еще раз читайте документацию.
Выделение в цикле цифр в числе от младших разрядов к старшим

Сегодня мы узнаем с вами, как отделить каждую цифру от числа начиная от младшего разряда, заканчивая старшим. Это нам частенько пригодится в дальнейшем.
Разделение числа на цифры
Идея алгоритма:
Для каждого числа необходимо найти его разряд.
- 1 => единица;
- 42 => 4 десятка и 2 единицы;
- 829 => 8 сотен, 2 десятка, 9 единиц.
Поиск разрядов числа
Нам дано число: 123456789
Последнюю цифру мы легко найдем, нам достаточно наше число разделить 10 с остатком. А что делать с предпоследней цифрой? Тут как минимум есть два варианта:
- /10 – откинули последнюю цифру, а затем снова %10;
- %10 и его степень. Способ довольно неудобный. Поэтому мы не будем им пользоваться.
Первый вариант кажется достаточно удобным. Мы будем получать нужную нам цифру в ходе каждой итерации цикла.
- 123456789 % 10 = 9;
- 123456789 / 10 = 12345678;
- Переходим к следующей итерации
- 12345678 % 10 = 8;
- 12345678 / 10 = 1234567;
И так далее пока не переберем все число.
Алгоритм разделения числа на цифры

- Ввести число a;
- Запустить цикл;
- Найти цифру при помощи a % 10;
- Вывести цифру (или использовать ее в задаче);
- Уменьшить а в 10 раз.
Этот цикл будет работать до тех пор, пока n не превратится в 0.
Стоит запомнить, что в данном случае цифры выводятся в обратном порядке.
Использование алгоритма
Мы можем применять данный алгоритм в этих случаях
- Анализ зависимостей в цифрах числа;
- Определение присутствия цифры;
- Подсчёт цифр;
- Подсчёт количества цифр;
- Замена цифр в числе;
- Анализ чисел в других системах счисления;
- Анализ бинарных данных.
Решение задач
Разбор задачи Счастливый билет

Например, мы хотим написать программу, которая проанализирует билет, который нам дали в автобусе, является он счастливым или нет? Если вы не помните или не знали, как это делается, напомню. Билет считается счастливым, когда сумма первых трех чисел равняется сумме трех последних.
Нам вводится номер билета и необходимо проверить, является ли он счастливым.
Давайте посчитаем. Посмотрите на номер нашего билета: 306 450.
- Если мы просуммируем 3+0+6 == 4+5+0;
- То получим в первой и второй сумме чисел одинаковое значение 9 == 9;
- Это означает, что наш билет счастливый.
Все элементарно, но теперь встает вопрос, как же нам разбить наше число на отдельные цифры? А мы уже знаем, как это сделать.
Алгоритм решения
- Ввести число;
- Разделять его на цифры;
- Первые три числа добавлять в sum1;
- Последние три числа добавлять в sum2;
- Сравнить sum1 и sum2.

Разложи на цифры
Дано восьмизначное число, необходимо написать в строку каждую цифру данного числа через пробел, начиная с разряда единиц.
Формат входных данных
Дано целое число N (10 000 000 Tags
Как разбить число на отдельные цифры в C #? [Дубликат]
Мне нужны отдельные элементы для каждого номера. Строка будет делать или даже индивидуальный номер.
Есть ли у метода .Split перегрузка для этого?
6 ответов
Я бы использовал модуль и цикл.
Что-то вроде этого будет работать, используя Linq:
Это даст вам список индексов IEnumerable.
Если вы хотите IEnumerable строк:
Ну, строка является IEnumerable и также реализует индекс, поэтому вы можете перебирать ее или ссылаться на каждый символ в строке по индексу.
Самый быстрый способ получить то, что вам нужно, — это, вероятно, метод ToCharArray() для String:
Затем вы можете преобразовать каждый Char в строку или проанализировать их в байтах или целых числах. Здесь Linq-y способ сделать это: