Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2017, 14:48   #1
ofsavier
Новичок
Джуниор
 
Регистрация: 31.03.2017
Сообщений: 2
По умолчанию Как задать матрицу, в которой каждый элемент может содержать переменное множество чисел?

Для решения системы уравнений мне необходимо задать параметры. Выглядит это примерно так
А B C D
A1 B1 C1 D1
A2 B2 C2 D2
Am Bm Cm Dm, где
m-количество "строк" с однотипными переменными задаётся изначально. (В моём случае А В С D- параметры производственных помещений, m-количество помещений, соответственно для каждого помещения они свои)
С этим я разобрался ( путём создания матрицы векторов или же динамической двумерной матрицы) и файла с данными, скоторый считывается в матрицу.) Соответственно получаются уравнения типа matrix[1][2]*a+matrix[1][3]*b=c
Но все усложняется тк переменная В включает в себя тоже множество чисел
(В11 В12 В13,...В1i )
где i-количество переменных В, тоже задётся изначально.
Также в отдельных случаях В11 может включать множество В111 В112 В113 В11j . Аналогично и с другими переменными.На ум приходит попытаться сделать матрицу векторов, состоящую из векторов (переменной длины). Грубо говоря "матрицу из матриц" Возможно ли это вообще и возможно ли будет в этом случае обращаться к переменным, при написании уравнений. Или возможно другое решение?
ofsavier вне форума Ответить с цитированием
Старый 31.03.2017, 14:56   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Вариантов есть у меня, только нужно ли... как вы потом будете с этим оперировать? Особенно учитывая, что универсальное решение будет не очень красиво выглядеть...

Может проще сразу размерность матрицы увеличивать и оперировать уже:
A1 B11 B12 B13 C1 D1
A2 B21 B22 B23 C2 D2
?
p51x вне форума Ответить с цитированием
Старый 01.04.2017, 01:10   #3
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Я до конца не уверен, но возможно, тебя удовлетворит:

0.jpg
ura_111 вне форума Ответить с цитированием
Старый 01.04.2017, 19:20   #4
ofsavier
Новичок
Джуниор
 
Регистрация: 31.03.2017
Сообщений: 2
По умолчанию

Так дело в том что количество переменных "В" тоже многомерно и переменно для каждой строки.

Грубо говоря может возникнуть ситуация
А1 В11 В12 В13 С1 D1
А2 В21 В22 В23 В24 В25 С2 В2
(в данном случае в первую строку нужно буде добавить В14 В15 и присвоить им нулевые значения) но само количество будет уже равно 5ти.И на ум приходит только задать В21 В22 В23 В24 В25 вектором , задавая его длину вводом с консоли. Аналогично и с другими переменными.
Вот и не знаю возможно ли это вообще задать

Касаемо создания динамического многомерного массива, ввести в него исходные данные с файла будет невозможно( это только для двумерного массива ), выходит, нужно будет заполнять его из созданной базы данных?

Последний раз редактировалось ofsavier; 01.04.2017 в 19:29.
ofsavier вне форума Ответить с цитированием
Старый 02.04.2017, 03:48   #5
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

" попытаться сделать матрицу векторов, состоящую из векторов (переменной длины)"

А как ты себе это представляешь?
Вектор-это вектор, а матрица -это матрица. Это типа разные сущности. Как ты их объединишь?
Я не понимаю этого... Покажи на простеньком коде.
___________________________________ ___________________________________ ___________________________________ _____________________
___________________________________ ___________________________________ ___________________________________ _____________________

1) можно сделать не один, а два массива. В первом будет хранится данные, а во втором как эти данные расположены в 1-м массиве, т.е. управление.
2) если надо, например "А1 В11 В12 В13 С1 D1" ( в процессе работы программы) добавить "В14 В15", тогда можно сделать строку "string" и добавлять:


0.jpg

конечно я говорил о массиве управления...
и соответственно нужно добавить соответствующую информацию во второй массив с данными.
3) можно сделать не строку, а массив строк (для А,В,С,D).
4) конечно в этом случае никто не говорит, что например, А12 - это элемент массива А с индексом 1и2....
А скорее, потом при обработке, нужно будет искать соответствие из управляющей последовательности А12 и соответствующей данных 2-го массива.
(не знаю как подробней описать - это нужно чувствовать).

Сложновато... но у тебя же задача соответствующая: массив массивов, из массивов..... и всё может быть переменной длины.
___________________________________ ___________________________________ ___________________________________ _____________________
___________________________________ ___________________________________ ___________________________________ _____________________

Еще вариант со "СПИСКАМИ".
Типа такого (динамически создаются экземпляры структуры и определяются между ними взаимосвязи -
это когда указатель из текущего экземпляра "смотрит" на следующий экземпляр ):

0 (1).jpg

(я сделал с разными именами ссылок h1,h2,h3,h4 чтобы было понятнее идея,
а вообще, для генерации бесконечной последовательности из экземпляров структуры, можно обойтись всего лишь 2-3 именами).

Да, я понимаю что пока в структуре присутствует только одно ссылка - это мало кому интересно, потому что кроме "змейки" ничего не реализовать,
но если ссылок будет хотя бы 2-е (пример):


001.jpg


Хотя нет, лучше 4-ри (для симуляции матрицы):

0 (2).jpg

а если надо добавить "новый узел" (например "А2"),
тогда необходимо будет создать его динамически и перестроить связи:

0 (3).jpg

При таком подходе нужно будет внимательно следить за взаимосвязями между экземплярами структуры-данных...
___________________________________ ___________________________________ ___________________________________ _____________________
___________________________________ ___________________________________ ___________________________________ _____________________

В обоих этих вариантах стандартные методы доступа к данным и обработки информации (как использовали при "обычных матрицах"):
Код:
matrix[1][2]*a+matrix[1][3]*b=c
здесь не подойдут. А нужно будет писать отдельные функции, которые будут симулировать:
Код:
matrix[1][2]*a+matrix[1][3]*b=c

Последний раз редактировалось ura_111; 02.04.2017 в 14:19.
ura_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блочный элемент не может содержать блочные и строчные элементы вместе? Aqua77 HTML и CSS 9 15.02.2017 08:55
[VB 2010]: Выбрать максимальный элемент в третьей строке, составить новую матрицу, каждый элемент которой равен соответствующему элементу матрицы Z, делённому на этот максимум. Fake taxi Помощь студентам 0 17.12.2016 12:23
Задан массив целых чисел, который может содержать повторяющиеся члены. Вычислить сколько чисел входят в массив более чем по одному nubiknovo Паскаль, Turbo Pascal, PascalABC.NET 6 20.11.2013 00:50