Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/165: Рейтинг темы: голосов - 165, средняя оценка - 4.54
0 / 0 / 1
Регистрация: 06.03.2013
Сообщений: 139

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

18.08.2013, 14:02. Показов 32503. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите как мне разделить число на цифры.
Пока есть что-то такое:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
            ulong number = 0;
            Console.WriteLine("Введите число от 100 до 100000000");
            number = Convert.ToUInt64(Console.ReadLine());
            if ((number < 100) | (number > 100000000))
            {
                Console.WriteLine("Введено некоректное число");
                Console.WriteLine("Нажмите Enter...");
                Console.ReadKey();
            }
            else
            {
                //вот тут мне надо получить все цифры из числа(по очередности, так что можно в одну переменную)
            }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.08.2013, 14:02
Ответы с готовыми решениями:

Разделить число введенное в консоли на отдельные цифры без использования циклов
Как сделать так, чтобы введенное число в консоле разделилось на отдельные цифры, для дальнейших манипуляций с ними?:scratch: Например...

Разделить строку на цифры и буквы
как разделить цифры от букв в Си шарп?

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

15
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
18.08.2013, 14:15
zlodey4ik,
C#
1
int[] digits = number.ToString().Select(c=>(int)char.GetNumericValue(c));
1
0 / 0 / 1
Регистрация: 06.03.2013
Сообщений: 139
18.08.2013, 14:22  [ТС]
Цитата Сообщение от Psilon Посмотреть сообщение
zlodey4ik,
C#
1
int[] digits = number.ToString().Select(c=>(int)char.GetNumericValue(c));
Пишет
"Неявное преобразование типа "System.Collections.Generic.IEnumerable< int>" в "int[]" невозможно. Существует явное преобразование (возможно, отсутствует приведение)"
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
18.08.2013, 14:23
C#
1
int[] digits = number.ToString().Select(c=>(int)char.GetNumericValue(c)).ToArray();
0
0 / 0 / 1
Регистрация: 06.03.2013
Сообщений: 139
18.08.2013, 14:28  [ТС]
digits возращает System.Int32[]
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
18.08.2013, 15:49

Не по теме:

Цитата Сообщение от Psilon Посмотреть сообщение
int[] digits = number.ToString().Select(c=>(int)char.Ge tNumericValue(c)).ToArray();
К темной стороне силы обратились вы. Напомнить почему не стоит преобразовывать числа в строки?



Классическое решение:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System;
using System.Collections.Generic;
 
namespace ConsoleApplication9
{
    class Program
    {
        const ulong number = 123543242134;
 
        static void Main(string[] args)
        {
            Console.WriteLine(string.Join(" ", GetDigits(number)));
            Console.ReadKey();
        }
 
        static byte[] GetDigits(ulong value)
        {
            List<byte> result = new List<byte>();
            while (value != 0)
            {
                result.Add((byte)(value % 10));
                value /= 10;
            }
            result.Reverse();
            return result.ToArray();
        }
    }
}
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
18.08.2013, 16:21
freeba, каюсь
0
18.08.2013, 16:27

Не по теме:

Напомнить почему не стоит преобразовывать числа в строки?
Поясните пожалуйста, в целях повышения образованности:)

0
0 / 0 / 1
Регистрация: 06.03.2013
Сообщений: 139
18.08.2013, 16:53  [ТС]
А еще такой вопрос, сейчас код мне выдает сразу все цифры, а мне надо чтобы я нажал интер и он выдал первую, нажал сново и вторую и т.д.
Я убрал цикл из static byte[] GetDigits(ulong value) но так он выдает всегда первую, подскажите как поправить
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
18.08.2013, 16:58

Не по теме:

Kruds,
1. Производительность. С числами процессор работает на порядки быстрее чем со строками.
2. Трансформация данных. Дополнительные расходы на преобразование в строку(символ) и обратно, потенциальные ошибки при работе с редкими кодировками.


zlodey4ik,
C#
1
2
3
4
5
6
7
8
9
 static void Main(string[] args)
        {
            foreach(var item in GetDigits(number))
            {
                Console.WriteLine(item);
                Console.ReadKey(); 
            }
            Console.ReadKey(); 
        }
2
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
18.08.2013, 17:08
freeba, эх вы, самое главное забыли
C#
1
2
3
4
5
6
7
8
9
10
    public static void Main()
    {
 
        const long myInt = 123456789;
        string s1 = myInt.ToString("N", CultureInfo.InvariantCulture);
        string s2 = myInt.ToString("N", CultureInfo.CurrentCulture);
        Console.WriteLine(s1);
        Console.WriteLine(s2);
        Console.WriteLine(s1 == s2);
    }
1
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
18.08.2013, 17:19
Psilon, Никто не совершенен
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
18.08.2013, 18:40
Рекурсивненько:
C#
1
2
3
4
5
6
7
8
9
IEnumerable<byte> EnumerateDigits(ulong n)
{
    if (n >= 10)
    {
        foreach (byte b in EnumerateDigits(n / 10))
            yield return b;
    }
    yield return (byte)(n % 10);
}
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
18.08.2013, 19:39

Не по теме:

kolorotur, жесть...



Добавлено через 7 минут
kolorotur, циклический варант даже короче и понятнее, что является единственный преимуществом рекурсивных алгоритмов, на фоне кучи недостатков.
C#
1
2
3
4
5
6
7
8
        private static IEnumerable<byte> GetDigits(long x)
        {
            var stack = new Stack<byte>();
            do 
                stack.Push( (byte) (x%10)); 
            while ((x /= 10) > 0);
            return stack;
        }
Добавлено через 4 минуты
или так:
C#
1
2
3
4
5
6
7
8
9
        private static IEnumerable<byte> GetDigits(long x)
        {
            if (x == 0)
                return new byte[] {0};
            var stack = new Stack<byte>();
            for (; x > 0; x /= 10)
                stack.Push((byte) (x%10));
            return stack;
        }
0
18.08.2013, 20:32

Не по теме:

Цитата Сообщение от Psilon Посмотреть сообщение
kolorotur, жесть...
Всё внимание на фразу:
Цитата Сообщение от kolorotur Посмотреть сообщение
Рекурсивненько

0
18.08.2013, 20:43

Не по теме:

kolorotur, все равно же ужас? Тем более, что согласно основным постулатам логики, любой вычислимый алгоритм может быть переписан в рекурсивном виде. Не переписывать же вообще все с этой фразочкой?:)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.08.2013, 20:43
Помогаю со студенческими работами здесь

Разделить число на цифры
Подскажите как разделить число на цифры. Типа число 569874 на 5,6,9,8,7,4 в memo по одной цифре в строке

Разделить целое число на цифры и поместить в массив
Случайное число от 0 до MAX_int, например 2415673, нужно разделить на цифры и поместить в массив по отдельности. Количество цифр в числе...

Дано очень большое натуральное число, разделить его на группы по три цифры
Дано очень большое натуральное число. Получить символьное представление данного числа, разделенных на группы по три цифры начиная, справа....

Ввести число, занести его цифры в стек. Вывести в число, у которого цифры идут в обратном порядке
Ввести число, занести его цифры в стек. Вывести в число, у которого цифры идут в обратном порядке.

Определить, сколько раз нужно число А разделить на число И што бы получить число С
помогите рещит тексты заданий перепечатываем на форум. для формул есть редактор читайте правила форума


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru