powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Длина массива
5 сообщений из 5, страница 1 из 1
Длина массива
    #39972725
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Есть простой пример - задан одномерный массив tupleArray . В массиве содержатся кортежи. В первом элементе кортежа это одномерный массив, а второй элемент - число. Нужно из tupleArray получить два массива X[,] и Y[]. Написал такой код.
Код: 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.
using System;

namespace ConsoleApp_test
{
    class Program
    {
        static void Main(string[] args)
        {
            (int[] x, int y)[] tupleArray = new (int[], int)[]
                {
                    (new int[]{ 10, 20, 30 }, 0),
                    (new int[]{ 11, 21, 31 }, 1),
                    (new int[]{ 12, 22, 32 }, 2),
                    (new int[]{ 13, 23, 33 }, 3),
                    (new int[]{ 14, 24, 34 }, 4),
                    (new int[]{ 15, 25, 35 }, 5),
                    (new int[]{ 16, 26, 36 }, 6),
                    (new int[]{ 17, 27, 37 }, 7)
            };

            int[,] X = new int[tupleArray.Length, tupleArray[0].x.Length];
            int[] Y = new int[tupleArray.Length];

            for (int i = 0; i < tupleArray.Length; i++)
            {
                for (int j = 0; j < tupleArray.x.Length; j++)
                {
                    X[i, j] = tupleArray[i].x[j];
                }

                Y[i] = tupleArray[i].y;
            }

            Console.ReadLine();
        }
    }
}

Код работает. Но в коде в выделенном месте для того, чтобы определить длину массива первого элемента кортежа идет такое обращение [i]tupleArray[0].x.Length] , то есть обращаемся к нулевому индексу. По логике можно обратиться к индексу выше, что не превышает tupleArray.Length .

Скажите, чтобы узнать длину массива первого элемента кортежа как можно по другому написать и более правильно, чтобы не обращаться к определенному индексу tupleArray ?
...
Рейтинг: 0 / 0
Длина массива
    #39972731
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

Код: 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.
using System;

namespace ConsoleApp_test
{
    class Program
    {
        const int InnerLen = 3;

        static void Main(string[] args)
        {
            (int[] x, int y)[] tupleArray = new (int[], int)[]
                {
                    (new int[InnerLen]{ 10, 20, 30 }, 0),
                    (new int[InnerLen]{ 11, 21, 31 }, 1),
                    (new int[InnerLen]{ 12, 22, 32 }, 2),
                    (new int[InnerLen]{ 13, 23, 33 }, 3),
                    (new int[InnerLen]{ 14, 24, 34 }, 4),
                    (new int[InnerLen]{ 15, 25, 35 }, 5),
                    (new int[InnerLen]{ 16, 26, 36 }, 6),
                    (new int[InnerLen]{ 17, 27, 37 }, 7)
            };

            int[,] X = new int[tupleArray.Length, InnerLen];
            int[] Y = new int[tupleArray.Length];

            for (int i = 0; i < tupleArray.Length; i++)
            {
                for (int j = 0; j < tupleArray[i].x.Length; j++)
                {
                    X[i, j] = tupleArray[i].x[j];
                }

                Y[i] = tupleArray[i].y;
            }

            Console.ReadLine();
        }
    }
}



Однако, зачем такие кульбиты -- непонятно.
...
Рейтинг: 0 / 0
Длина массива
    #39972775
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

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


hVostt
Однако, зачем такие кульбиты -- непонятно.
Экспериментирую со статистическими расчетами для того чтобы лучше понимать и разжевать программирование на C#.
...
Рейтинг: 0 / 0
Длина массива
    #39972827
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk
Как вариант можно. Но предполагается, что мы заранее не знаем значение InnerLen, просто получаем как параметр функции.


У вас в массиве с кортежами в каждом кортеже может оказаться разная длина массива. Единственный способ гарантировать длину вложенного массива -- задавать константой или параметром.
...
Рейтинг: 0 / 0
Длина массива
    #39972833
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk
Скажите, чтобы узнать длину массива первого элемента кортежа как можно по другому написать и более правильно, чтобы не обращаться к определенному индексу tupleArray ?

Возможно, правильней искать не длину первого, а максимальную длину:
Код: c#
1.
tupleArray.Max(t => t.x?.Length ?? 0);
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Длина массива
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]