Есть массив размерностью n*m, собственно это количество строк и столбцов существующей матрицы. Как заполнить её из массива?
У меня ночь и может я не соображаю, но чтобы я не делал, всегда матрица заполняется единым числом - последним элементом массива. Прошу решение с кодом, а не подсказки, пожалуйста..
Dmitrii, знаю, что тут никто не решает, но задача самая простая, как 2+2, но почему то у меня просто выпало из головы и я не понимаю..
у меня есть массив, просто условно:
int arr[9] {0,1, 2,3....}
матрица mx[3][3]
я могу заполнить матрицу рандомными числами, аля:
for (i=0; i < 3; i++)
{
for (j=0; j < 3; j++)
{
mx[i][j] = rand();
}
}
но мне не нужно заполнять её рандомно, а нужно вытащить значения из arr и заполнить mx
На вопрос «как сделать» отвечает документация и поиск в интернет.
Тут отвечают на вопросы «почему я сделал, как в документации, а оно не работает. Поискал в интернет, вот запросы, в ответах не нашел. Что я делаю не так?»
Покажите, как вы пробовали решить проблему, приведите код попытки (пусть неудачной), опишите, как запускали, что ожидали и что получилось.
За готовыми решениями - на фриланс. В текущем виде это не вопрос, а задание. Нарушен п.5.12 Регламента.
у меня есть массив, просто условно:
int arr[9]={0,1, 2,3....}
матрица mx[3][3]
Оба варианта - массивы. В С++ нет типа данных "матрица".
Двумерные массивы в С++ хранятся в памяти по строкам, например: int mx[2][2] = {{1,2},{3,4}};
В памяти элементы будут располагаться так: 1, 2, 3, 4 - сначала элементы первой строки, затем элементы второй строки подряд.
Соответственно если ваш массив arr[9] вмещает элементы матрицы по строкам, то можно его просто скопировать: std::memcpy(&mx[0][0], & arr[0], sizeof(mx));
Элемент в строке i в столбце j (считая с 0) в линейном массиве будет иметь номер i*n+j (или там на m надо вместо m умножать. Там должно быть количество столбцов).
Соответственно, программа должна двумя вложенными циклами присваивать в ячейку [i][j] вот тот вот элемент из массива.