Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> динамические двумерные массивы в VB 
:(
    Опции темы
aaaate
Дата 17.4.2011, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.4.2011

Репутация: нет
Всего: нет



 Здравствуйте форумчане. 
Задача моей программы выбирать нужную размерность матрицы (массива) и вводить туда данные, а потом выводить. 

Это нужно делать, путем создания динамического двумерного массива и закрепить его с каким-нить визуальным элементом. 

1) Можете на примере показать как создать динамический двумерный массив, чтобы пользователь мог вводить\выводить (от)туда данные? 
2) С каким визуальным элементом его будет проще всего связать, с TextBox, DataGrid?? 

Заранее спасибо, за то что обратили свое внимание на эту тему. 
PM MAIL   Вверх
diadiavova
Дата 17.4.2011, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(aaaate @  17.4.2011,  23:39 Найти цитируемый пост)
 Можете на примере показать как создать динамический двумерный массив, чтобы пользователь мог вводить\выводить (от)туда данные? 

Вопрос непонятен. Что значит "динамический массив"?
Цитата(aaaate @  17.4.2011,  23:39 Найти цитируемый пост)
С каким визуальным элементом его будет проще всего связать, с TextBox, DataGrid?? 

Можно попробовать DataGridView, но вообще для того, чтобы что-то советовать, надо иметь более полное представление о задаче. В принципе возможен вариант и с текстбоксами, расположенными в TableLayoutPanel.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
aaaate
Дата 18.4.2011, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.4.2011

Репутация: нет
Всего: нет



Динамический массив - размер которого определяется во время работы программы.

Вообще моя полная задача, - это создать программу , пользователь сможет выбирать требуемую размерность матрицы, введет данные (в какой-нить элемент управления DataGrid или TextBox, я новичок в этом, выберу, то что попроще), а моя программа решит это методом Гаусса и выдаст ответ(тоже в какой-нить элемент управления). У меня не хватит наглости всем этим грузить, я хочу сама разобраться.

Но вопрос о том, как создать динамический двумерный массив и как заполнять в него данные, честно говоря завел меня в ступор ((

PM MAIL   Вверх
diadiavova
Дата 18.4.2011, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(aaaate @  18.4.2011,  01:45 Найти цитируемый пост)
Динамический массив - размер которого определяется во время работы программы.

Ну здесь все просто
http://msdn.microsoft.com/ru-ru/library/w8k3cys2.aspx
Цитата(aaaate @  18.4.2011,  01:45 Найти цитируемый пост)
 DataGrid

Это устаревший контрол и его уже не используют, вместо него есть DataGridView, он вполне подойдет для твоей цели.

Цитата(aaaate @  18.4.2011,  01:45 Найти цитируемый пост)
Но вопрос о том, как создать динамический двумерный массив и как заполнять в него данные, честно говоря завел меня в ступор ((

А в чем проблема? У грида есть свойство Rows, возвращающее строки грида, туда можно программно добавлять строки удалять их и извлекать из них данные. У каждой строки есть свойство Cells, аналогичным образом возвращающее ячейки. Если надо работать с массивом(а это не самый лучший способ, предпочтительнее создать для матрицы собственный класс), то собственно данные надо переносить в двойном цикле: внешний обходит строки, внутренний - ячейки. 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
aaaate
  Дата 18.4.2011, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.4.2011

Репутация: нет
Всего: нет



Спасибо конечно, с созданием массива разобрались, но
Цитата

Dim intArray(10, 10, 10) As Integer
ReDim Preserve intArray(10, 10, 20)
ReDim Preserve intArray(10, 10, 15)
ReDim intArray(10, 10, 10)


Это все равно несколько не то. !!Нужно, чтобы пользователь (обычный человек, не владеющий языком программирования) визуально сам выбрал размер требуемой для него матрицы. !! Я не знаю как это программно реализовать((

user posted image

Вот я нарисовала форму. Добавила 3 элемента DataGridView,
2 элемента NumericUpDown
в пункт (1) должно вводиться
user posted image
в пункте (2) пользователь должен регулировать размерность матрицы
потом нажимает "Решить" и в (3) DataGridView получит ответ

Как программно реализовать чтобы пользователь через элементы "NumericUpDown" выбрал нужную размерность матрицы?
Цитата

А в чем проблема? У грида есть свойство Rows, возвращающее строки грида, туда можно программно добавлять строки удалять их и извлекать из них данные.


Rows не вижу, только RowsDeafultCellStyle. Все равно это не решает проблему(( . Как программно добавлять, удалять и извлекать данные, я тоже пока что без понятий. 


PM MAIL   Вверх
aaaate
Дата 18.4.2011, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.4.2011

Репутация: нет
Всего: нет



DataGridView более нагляден. Но увы, я не знаю, как через него реализовывать.
Поэтому для ввода матрицы скорей всего буду использовать InputBox, а для вывода решения TextBox.
думаю организовать что-то вроде этого:
Цитата

Использование динамического массива 

Чтобы отобразить код программы проекта Fixed Array, откройте Редактор кода.
Прокрутите его вверх до начала кода формы, в которой вы первоначально объявили фиксированный массив Massiv.
Удалите число 6 из объявления массива Massiv, чтобы массив стал динамическим. Этот оператор должен выглядеть так:

Dim Massiv() As Single
Добавьте под объявлением массива Massiv следующее объявление переменной:

Dim Stroki As Integer
Целочисленная переменная Stroki будет использована для получения ввода от пользователя и для задания размера динамического массива во время выполнения.

Прокрутите Редактор кода вниз, чтобы отобразить процедуру события Button1_Click, и измените ее код так, как показано ниже.

Dim Prompt, Title As String
Dim i As Short
Prompt = "Введите максимальное кол-во строк."
Stroki = InputBox("Кол-во строк?", "Создание массива")
If Stroki > 0 Then ReDim Massiv(Stroki - 1)
For i = 0 To UBound (Massiv)
    Title = "Строки " & (i + 1)
Massiv(i) = InputBox(Prompt, Title)
Next


думаю организовать что-то вроде этого. Код не большой, не так наглядно. Но мне уже хоть как-нибудь , пожертвую "красотой", главное чтоб работало.
Этот код для одномерного массива.
Как организовать тоже самое, но для двухмерного, объявление, ввод переменных?
Я признаться запуталась несколько в этом всем smile 

Это сообщение отредактировал(а) aaaate - 18.4.2011, 10:49
PM MAIL   Вверх
diadiavova
Дата 18.4.2011, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(aaaate @  18.4.2011,  11:27 Найти цитируемый пост)
Это все равно несколько не то. !!Нужно, чтобы пользователь (обычный человек, не владеющий языком программирования) визуально сам выбрал размер требуемой для него матрицы. !!

Это должен сделать не пользователь, а ты.
Цитата(aaaate @  18.4.2011,  11:27 Найти цитируемый пост)
Я не знаю как это программно реализовать((

Вот так ты объявляешь массив
Код

Dim matrix(,) As Double

А вот так изменяешь его размер
Код

ReDim matrix(Decimal.ToInt32(Me.NumericUpDown1.Value), _
         Decimal.ToInt32(Me.NumericUpDown2.Value))


Лучше будет, если размер будет устанавливаться либо через диалоговое окно, либо после выбора количества строк и столбцов пользователь должен будет нажать кнопку, подтверждающую выбор и по ее нажатию вносить изменения в массив и в грид.
Цитата(aaaate @  18.4.2011,  11:27 Найти цитируемый пост)
в пункт (1) должно вводиться

Не надо туда вносить имен переменных, их лучше вынести в заголовки столбцов грида, а в ячейки вноси значения.
Цитата(aaaate @  18.4.2011,  11:27 Найти цитируемый пост)
Rows не вижу

http://msdn.microsoft.com/ru-ru/library/sy...dview.rows.aspx
Цитата(aaaate @  18.4.2011,  11:27 Найти цитируемый пост)
 Как программно добавлять, удалять и извлекать данные, я тоже пока что без понятий. 

Тебе надо работать с упомянутой коллекцией Rows и Columns

Добавлено через 4 минуты и 56 секунд
Цитата(A5uKa @  18.4.2011,  11:41 Найти цитируемый пост)
Динамический Array в .NET и Resize - это плохо 

И чем это плохо? Применительно к данному случаю? То, что ты предлагаешь - кривой костыль, заменяющий встроенную функциональность.
Цитата(A5uKa @  18.4.2011,  11:45 Найти цитируемый пост)
п.с. и для отображения думаю подойдёт ListBox

И чем он лучше грида? smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
aaaate
  Дата 18.4.2011, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.4.2011

Репутация: нет
Всего: нет



Цитата

Вот так ты объявляешь массив
код VB.NET
1:
Dim matrix(,) As Double

А вот так изменяешь его размер
код VB.NET
1:
2:
ReDim matrix(Decimal.ToInt32(Me.NumericUpDown1.Value), _
         Decimal.ToInt32(Me.NumericUpDown2.Value))


Спасибо. Попозже отпишусь, что получилось.
PM MAIL   Вверх
diadiavova
Дата 18.4.2011, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142




M
diadiavova
Последние сообщения не содержали ничего кроме флуда и были удалены.



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0797 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.