0 / 0 / 0
Регистрация: 18.11.2017
Сообщений: 12
1

Число типа int преобразовать в массив int[] по одной цифре в каждый индекс

08.07.2018, 12:00. Показов 9639. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В интернете никак не могу. Помогите пожалуйста.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.07.2018, 12:00
Ответы с готовыми решениями:

Как преобразовать число типа int в строку типа string без методов-конвертов на C#?
В общем, все что выше написано. Пишу в Visual Studio на C#. Преобразовать без конвертирования,...

Передать массив элементов(типа int) объекта, в функцию из массивов(типа int)
Представьте такую ситуацию. Есть у вас массив чисел: Mass И вы хотите передать его в функцию. Я...

не удается преобразовать типа 'int*' в 'int**'
#include <iostream> #include <time.h> #include <math.h> using namespace std; int...

Преобразовать строку цифр в число типа int
Здравствуйте! Помогите поправить код функции, не работает при работе с ведущим знаком '-'....

5
Эксперт JS
6492 / 3903 / 2005
Регистрация: 14.06.2018
Сообщений: 6,781
08.07.2018, 13:19 2
Красивый способ через LINQ:
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
using System;
using System.Linq;
 
/// <summary>
/// Число типа int преобразовать в массив int[] по одной цифре в каждый индекс 
/// </summary>
namespace ConsoleApp18
{
    class Program
    {
        static void Main(string[] args)
        {
            int number = 123456;
 
            var array = number.ToString().Select(e=>int.Parse(e.ToString())).ToArray();
 
            foreach (var item in array)
            {
                Console.WriteLine(item);
            }
 
            Console.ReadLine();
        }
    }
}
Древний топорный способ - рубить по степеням числа 10. Аналог двоичного сдвига, а здесь как бы десятичный сдвиг.
0
Эксперт .NET
10527 / 6455 / 1502
Регистрация: 25.05.2015
Сообщений: 19,578
Записей в блоге: 14
09.07.2018, 10:17 3
Лучший ответ Сообщение было отмечено Usaga как решение

Решение

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
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace ConsoleApp18
{
    class Program
    {
        static void Main(string[] args)
        {
            int number = 123456;
 
            foreach (var digit in number.GetDigits())
            {
                Console.WriteLine(digit);
            }
 
            foreach (var digit in number.GetDigits().Reverse())
            {
                Console.WriteLine(digit);
            }
        }
    }
 
    static class Int32Extension
    {
        public static IEnumerable<int> GetDigits(this int value)
        {
            while (true)
            {
                if (value == 0)
                    yield break;
 
                var digit = value % 10;
                value /= 10;
 
                yield return digit;
            }
        }
    }
}
Применение .ToArray() к перечислению даёт массив.
0
4 / 4 / 1
Регистрация: 11.09.2017
Сообщений: 21
10.07.2018, 09:39 4
Ну или можно вот таким путём пойти:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
 
            Console.WriteLine("Введите набор чисел");
            string num = Console.ReadLine();
 
            int[] numbers = new int[num.Length];
            // помним что текст - массив символов
 
            for (int i = 0; i < num.Length; i++)
            {
                if (Char.IsDigit(num[i]))// этот метод проверяет является ли 
                    //символ числом и возвращает true или false в зависимости 
                    //от результата вычислений
                {
                    //ну или можно нашим методом
                    /*
                     
                    if (IntForChar(num[i]) != -1)
 
                     */
                    numbers[i] = IntForChar(num[i]);
                }
            }
 
            foreach (var item in numbers)
            {
                Console.Write(item.ToString() + " ");
            }
            Console.WriteLine("");//вывод на экран
 
            Console.Read();
        }
 
        static int IntForChar(char ch)
        {
            switch (ch)
            {
                case '0': return 0;
                case '1': return 1;
                case '2': return 2;
                case '3': return 3;
                case '4': return 4;
                case '5': return 5;
                case '6': return 6;
                case '7': return 7;
                case '8': return 8;
                case '9': return 9;
            }
 
            return -1; // если это не число
        }
    }
}
Думаю для новичка так легче
0
186 / 171 / 93
Регистрация: 13.06.2018
Сообщений: 708
10.07.2018, 11:54 5
C#
1
2
3
4
5
6
7
        int n = 1234567890;
        char[] c = n.ToString().ToCharArray();
        int[] a = new int[c.Length];
        for (int i = 0; i < a.Length; i++)
            a[i] = c[i] - '0';
        for (int i = 0; i < a.Length; i++)
            Console.WriteLine("a[{0}]={1}", i, a[i]);
1
4 / 4 / 2
Регистрация: 06.06.2018
Сообщений: 24
11.07.2018, 10:36 6
С возможностью ввода числа вручную)
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
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Int_to_array
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Введите число: ");
            string y = Convert.ToString(Console.ReadLine());
            int x = Convert.ToInt32(y);
       
            int[] array = new int[y.Length];
            int z = 0;
           
 
            for (int i = 0; i < array.Length; i++)
            {
                z = x % 10;
 
                array[i] = z;
                x -= z;
                x = x / 10;
            
            }
 
            for (int i = 0; i < array.Length; i++)
            {
                Console.WriteLine("a[{0}] = {1}",i,array[i]);
            }
            Console.ReadKey();
        }
    }
}
Добавлено через 8 минут
1ый вариант число записывается с последнего к первому, вот вариант с первого к последнему!
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
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Int_to_array
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Введите число: ");
            string y = Convert.ToString(Console.ReadLine());
            int x = Convert.ToInt32(y);
       
            int[] array = new int[y.Length];
            int z = 0;
           
 
            for (int i = array.Length - 1; i >= 0; i--)
            {
                z = x % 10;
 
                array[i] = z;
                x -= z;
                x = x / 10;
            
            }
 
            for (int i = 0; i < array.Length; i++)
            {
                Console.WriteLine("a[{0}] = {1}",i,array[i]);
            }
            Console.ReadKey();
        }
    }
}
0
11.07.2018, 10:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2018, 10:36
Помогаю со студенческими работами здесь

Преобразовать строку содержащую шестнадцатеричное число в десятичное число типа INT
TCHAR string = &quot;A7D&quot;; ... INT value = 2685; Как преобразовать?

8-и значное число типа int преобразовать в строчку char\string
Подскажите, есть ли какая-нибудь функция, которая загоняет число в строчку. Например есть 8-и...

Как в выделенную память записать поочередно число int, массив char[n], и еще число int
Выделяю память void* Start=malloc(Size); Как туда записать поочередно число int, массив char,...

Какая из этих функций int Q(int w) int W(int y,int u,int i) сработает быстрее?
Если есть 2 функции(простые или перегруженные) к примеру Q(int w) int W(int y,int u,int i)или int...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru