Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для ksuna
9 / 9 / 0
Регистрация: 28.11.2012
Сообщений: 27

Возможно ли создать в С# массив ступенчатых массивов?

12.05.2013, 01:21. Показов 2421. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, возможно ли в С# создать одномерный массив ступенчатых массивов. И если да, то как его инициализировать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.05.2013, 01:21
Ответы с готовыми решениями:

Сортировка ступенчатых массивов
непонятна сортировка ступенчатого массива когда элементом массива массивов является одномерный, еще хотелось бы на примере двумерного...

Какие есть виды массивов (кроме одномерных, двумерных и двумерных ступенчатых массивов)?
Какие есть виды массивов (кроме одномерных, двумерных и двумерных ступенчатых массивов)? И почему такая вот запись является...

Создать массив структур без использования массивов и нотации массивов
Доброго времени суток! Есть задание, в котором нужно создать массив структур, имея следующую структуру: struct name { string...

15
 Аватар для Midian
606 / 388 / 198
Регистрация: 31.03.2013
Сообщений: 2,690
12.05.2013, 01:29
Ступенчатый массив
0
 Аватар для ksuna
9 / 9 / 0
Регистрация: 28.11.2012
Сообщений: 27
12.05.2013, 01:34  [ТС]
Midian, я в курсе, что такое ступенчатый массив и как его инициализировать отдельно, меня волнует, как его инициализировать внутри каждого элемента одномерного массива. и как собственно объявлять этот одномерный массив.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.05.2013, 01:35
Это так называемый рваный массив (Jagged).

C#
1
2
3
4
5
6
            bool[][] arr = new bool[4][];
 
            arr[0] = new bool[2];
            arr[1] = new bool[4];
            arr[2] = new bool[8];
            arr[3] = new bool[3];
Или через цикл:
C#
1
2
3
4
            bool[][] arr = new bool[4][];
 
            for (int i = 0; i < arr.Length; i ++)
                arr[i] = new bool[i * 2];
0
 Аватар для ksuna
9 / 9 / 0
Регистрация: 28.11.2012
Сообщений: 27
12.05.2013, 01:37  [ТС]
Dragokas, Вы показываете, как просто инициализировать ступенчатый массив, а мне интересно, как это сделать внутри элементов одномерного массива.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.05.2013, 01:40
C#
1
2
3
4
5
6
7
8
9
10
11
// инициализация ступенчатого массива (4 элемента одномерного)
bool[][] arr = new bool[4][];
 
// инициализация массива внутри 0-го элемента.
arr[0] = new bool[2]
 
// получение размерности ступенчатого одномерного массива
Console.WriteLine(arr.Length);
 
// получение размерности массива, объявленного внутри 0-го элемента ступенчатого
Console.WriteLine(arr[0].Length);
0
 Аватар для ksuna
9 / 9 / 0
Регистрация: 28.11.2012
Сообщений: 27
12.05.2013, 01:49  [ТС]
Dragokas, либо Вы меня не понимаете, либо я не догоняю.
вот что я хочу визуально получить
0
 Аватар для ksuna
9 / 9 / 0
Регистрация: 28.11.2012
Сообщений: 27
12.05.2013, 01:51  [ТС]
Dragokas, один большой одномерный массив, в каждом элементе которого массив в несколько строк
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.05.2013, 02:18
ksuna, вполне возможно. Я ведь только учусь.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        static void Main(string[] args)
        {
            string[][] arr = new string[][]
                {
                 new string[] { "Строка1", "Строка2", "Строка3" },
                 new string[] { "Строка5", "Строка6" },
                 new string[] { "Строка7", "Строка8", "Строка9" }
                };
 
            for (int m = 0; m < arr.Length; m++)
            {
                Console.WriteLine("Массив № " + m);
 
                for (int i = 0; i < arr[m].Length; i++)
                    Console.WriteLine("\t\t" + arr[m][i]);
 
                Console.WriteLine();
            }
            Console.Read();
        }
Добавлено через 54 секунды
Может Вам нужно поместить в каждый элемент одномерного ступенчатого массива двухмерный массив типа int ?
0
 Аватар для Дмитрий3241
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
Записей в блоге: 6
12.05.2013, 02:19
Цитата Сообщение от ksuna Посмотреть сообщение
Dragokas, либо Вы меня не понимаете, либо я не догоняю.
Не догоняешь.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.05.2013, 02:26
Может, судя из картинки Вы хотите сэкономить память на разном кол-ве элементов в каждой из строк?
0
 Аватар для ksuna
9 / 9 / 0
Регистрация: 28.11.2012
Сообщений: 27
12.05.2013, 02:32  [ТС]
Dragokas,
вот по сути нужно что-то вроде этого
C#
1
2
3
4
5
6
7
            string[][,] arr = new string[][,]
                {
                 new string[,] { {"Строка1", "Строка2", "Строка3"},
                                   {"Cтрока11", "Строка22", "Строка23"}},
                 new string[,] { {"Строка5", "Строка6"},
                                   {"Cтрока11", "Строка22"}},
                };
но чтобы внутри не двумерный массив был, а ещё один ступенчатый

Добавлено через 1 минуту
Dragokas, да, в целом это для экономии памяти
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.05.2013, 02:43
Ах. Ну тогда двухвложенный нужно. Теперь понял.
Нечто вроде такого:
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
static void Main(string[] args)
        {
            int[][][] arr = new int[][][]
            {          
                 new int[][] 
                 { 
                     new int[] { 4, 5, 7, 8, 90 },
                     new int[] { 4, 5, 7 },
                     new int[] { 35 }
                 },
                 new int[][]
                 {
                     new int[] { 45, 7, 8, 0, 75 },
                     new int[] { 365, 7, 8, 9, 0 }
                 },
                 new int[][]
                 {
                     new int[] { 5, 6, 8, 9},
                     new int[] { 5, 7, 9, 8, 2, 1 },
                     new int[] { 5, 7, 8}
                 }
            };
 
            for (int m = 0; m < arr.Length; m ++)
            {
                Console.WriteLine("Массив № " + m);
 
                for (int i = 0; i < arr[m].Length; i ++)
                {
                    for (int j = 0; j < arr[m][i].Length; j ++)
                        Console.Write("{0, 4}", arr[m][i][j]);
                    Console.WriteLine();
                }
                Console.WriteLine();
            }
            Console.Read();
        }
1
 Аватар для ksuna
9 / 9 / 0
Регистрация: 28.11.2012
Сообщений: 27
12.05.2013, 02:46  [ТС]
Dragokas, спасибо Вам огромное!
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.05.2013, 02:49
Да не за что. Следующий вопрос наверно будет:
Как объявить отдельно каждый массив внутри двухвложенного ступенчатого...
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
12.05.2013, 05:37
http://professorweb.ru/my/csha... l4/4_3.php

И на пальцах: по сути у вас есть массив ссылок на "что-то". Именно ссылко, то есть в памяти это выглядит так (смотрим рисонок):



А так как это ссылки, они могут указывать на что угодно (массив, число, картинку, поток). При обращении к элементу посредством array[i][j] мы делаем следующее: берем i-й элемент главного списка, смотрим на что он указывает и уже из найденого объекта ищем j-й элемент. Обратится как к линейному массиву array[ i*n + j] не выйдет. И объявить ступенчатый массив таким способом не получится, так-как нам нужно знать, сколько места выделять под элементы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.05.2013, 05:37
Помогаю со студенческими работами здесь

Создать из двумерного массива зубчатый массив(массив массивов)
Дана двумерная матрица из 4 столбца и n строк. задача состоит в том что, нужно создать зубчатый массив, где элементы и есть элементы...

Массив: Создать третий массив, каждый элемент которого равен сумме элементов двух заданных массивов.
Приветствую всех! Не откажите в помощи бедному студенту.. Помогите написать программу в которой имеются два массива с одинаковым...

Массив: создать одномерный массив из двумерных массивов
Всем привет, подскажите пожалуйста, мне надо создать одномерный массив из двумерных массивов? Возможно ли такое сделать и как? Двумерные...

Возможно ли создать массив потоков
А возможно ли создать массив потоков, или лист потоков. Типа: List&lt;Thread&gt; threads = new List&lt;Thread&gt;(SomeMethod); Ну и...

Возможно ли создать двумерный динамический массив?
существует ли возможность создать двумерный динамический массив, к примеру 2х5 ?


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru