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

Добавление строк к двумерному массиву

10.07.2015, 17:52. Показов 2012. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как добавить строки к двумерному массиву?

Добавлено через 42 минуты
Под строкой имел в виду вектор значений. Т.е., например, из массива n*m сделать (n+1)*m. Желательно, обходясь без List
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2015, 17:52
Ответы с готовыми решениями:

По двумерному массиву массиву А получить одномерный массив В, присвоив его k-му элементу значение TRUE
По двумерному массиву массиву А получить одномерный массив В, присвоив его k-му элементу значение...

Задача по двумерному массиву.
Задача: В двумерном массиве вычислить сумму элементов каждого столбца отдельно и так же отдельно...

Присвоение значений двумерному массиву
Есть текстовый файл, в нем поле для игры 12х12. Читаю нужные строки File.ReadAllLines, создаю...

Поиск по двумерному массиву list<>
Всем доброго дня. Замучался с массивом. Нужно организовать поиск но я не понимаю как это сделать...

3
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
10.07.2015, 18:19 2
Лучший ответ Сообщение было отмечено BOEH как решение

Решение

Только если к ступенчатому двумерному массиву. Вот пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
int[][] arr = new int[5][];
for (int i = 0; i < arr.GetLength(0); i++)
    arr[i] = new int[5];
//...
Array.Resize<int[]>(ref arr, arr.GetLength(0) + 1);
arr[arr.GetLength(0) - 1] = new int[5];
for (int i = 0; i < arr.Length; i++)
{
    for (int j = 0; j < arr[i].Length; j++)
    {
        Console.Write(arr[i][j] + " ");
    }
    Console.WriteLine();
1
35 / 35 / 20
Регистрация: 11.08.2012
Сообщений: 142
11.07.2015, 00:13 3
Можно создать класс с массивом. В классе метод, который создаст новый массив той же размерности, но с количеством строк на 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
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
class Test
    {
        public static void Main()
        {
            MyArray myArr = new MyArray();      //Создаём объект класса с массивом
 
            //Заполняем первую строку массива значениями от 0 до 4
            for (int i = 0; i < myArr.ColumnCount; i++)
            {
                myArr.Array[i, 0] = i;
            }
 
            //Выводим первую строку на консоль
            for (int i = 0; i < myArr.ColumnCount; i++)
            {
                Console.Write(myArr.Array[i, 0] + " ");
            }
            Console.WriteLine("\nПервая строка.\n");
 
            //Добавляем новую строку в массив
            myArr.AddNewRow();
 
            //Заполняем вторую строку массива значениями от 4 до 0
            for (int i = 0; i < myArr.ColumnCount; i++)
            {
                myArr.Array[i, myArr.RowCount - 1] = 5 - i;
            }
 
            //Выводим и первую, и вторую строки
            for (int i = 0; i < myArr.RowCount; i++)
            {
                for (int j = 0; j < myArr.ColumnCount; j++)
                {
                    Console.Write(myArr.Array[j, i] + " ");
                }
                Console.WriteLine();
            }
            Console.WriteLine("Первая и вторая строки\n");
        }
    }
 
//Класс массива
    class MyArray
    {
        int rowCount = 1;       //Счётчик строк
        int columnCount = 5;    //Счётчик колонок
        int[,] arr;             //Массив
 
        public MyArray()
        {
            arr = new int[columnCount, rowCount];   //Инициализируем массив
        }
 
        public void AddNewRow()
        {
            int[,] temp = arr;                      //Сохраняем массив
            rowCount++;                             //Увеличиваем счётчик строк
            arr = new int[columnCount, rowCount];   //Создаём новый массив с увеличенным количеством строк
 
            //Записываем значения в новый массив из сохранённого массива
            for (int i = 0; i < rowCount - 1; i++)
            {
                for (int j = 0; j < columnCount; j++)
                {
                    arr[j, i] = temp[j, i];
                }
            }
        }
 
        //Свойство. Предоставляет массив
        public int[,] Array { get { return arr; } }
 
        //Свойство. Предоставляет счётчик строк
        public int RowCount { get { return rowCount; } }
 
        //Свойство. Предоставляет счётчик колонок
        public int ColumnCount { get { return columnCount; } }
    }
Можно добавить в класс индексаторы, реализовать интерфейсы IEnumerator и IEnumerable, и работать с объектом класса как с обычным массивом, точнее - с коллекцией.
1
1 / 1 / 0
Регистрация: 07.01.2015
Сообщений: 48
11.07.2015, 05:25  [ТС] 4
Спасибо, попробую ступенчатым массивом. Обидно, что разработчики C# не предусмотрели нормальных способов, хотя на практике двумерные динамические массивы часто встречаются. Помню, как на Паскале все функцией SetLength решалось
0
11.07.2015, 05:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2015, 05:25
Помогаю со студенческими работами здесь

По двумерному массиву А получить одномерный массив В
Люди, помогите плиз= По двумерному массиву массиву А получить одномерный массив В, присвоив...

По двумерному массиву А получить одномерный массив В
Добрый вечер, помоги пожалуйста написать программку: По двумерному массиву А получить одномерный...

По двумерному массиву А получить одномерный массив В
По двумерному массиву А получить одномерный массив В, присвоив его k-му элементу значение TRUE,...

Написать цикл проходящий по двумерному массиву
Доброго времени суток, возникла проблема по написанию цикла, который должен пробегать по двумерному...


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

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