Как сформировать сумму матриц с возможностью использовать разное их количество?
По заданию нужно сделать калькулятор двумерных матриц.
Пользователь вводит количество матриц для сложения, затем задает их размеры [MxN] и программа должна сложить. Там есть еще некоторые задания, но меня конкретно это интересует.
Условно говоря, я ввожу arr [N][M] для изображения матрицы в виде такого массива, циклом for делаю из этого подобие матрицы, а как бы привязать количество вводимых матриц?
Ввести к примеру k и сделать еще один цикл for, который будет давать на ввод матрицы, пока значение цикла не достигнет k?
А сложение им как прописать, вот тут вообще что-то не приятно.
Реслюков Александр, нет, сначала все элементы первой матрицы, потом второй… То есть предлагаем пользователю ввести элемент (i,j) k-й матрицы и сразу же прибавляем введённое значение к summa[i][j].
for (i=0; i<N; i++) {
for (j=0; j<M; j++) {
scanf ("%d", &arr [i][j]);
} }
Если у меня это так выглядит, то мне ввести summa [i][j] и увеличивать его за каждый ход цикла на текущее (i,j)? В плане как-то смешано с этими циклами в цикле в цикле в цикле, нужно же и summa [i] [j] прописывать в двойной цикл, можете написать это?
wisgest, а, я понял наконец. Способ отличный, но боюсь в моем задании мне это аукнется, т.к. все введенные матрицы должны сохраняться в txt-документ, а я об этом и не упомянул здесь.
Но все равно большое спасибо за помощь!
все введенные матрицы должны сохраняться в txt-документ
Ввели матрицу, сразу сохранили в txt, ввели вторую, сохранили. Сложили, результатом сложения заменили первую матрицу. Ввели третью матрицу, сохранили, сложили, ...
Но можно и "по простому" - количество матриц известно , размерности то же.
Динамически выделяете память под трехмерный массив размерностью [k][N][M], вводите все матрицы, складываете, сохраняете ...
Будет немного сложно разобраться с индексацией в динамическом трехмерном массиве. Появится трехкратная вложенность циклов. Но, видимо, именно на это и направлено задание.
все введенные матрицы должны сохраняться в txt-документ,
Реслюков Александр, всё то же самое: ввели элемент — сразу же сохранили его в txt, закончили вводить строку — вывели перевод строки, закончили вводить очередную матрицу-слагаемое — вывели какой-нибудь разделитель (в простейшем случае — пустую строку). Способ был бы не применим, если бы сначала нужно было вывести матрицу-сумму, а лишь затем — матрицы-слагаемые, но, думаю, такой порядок не требуется.
Сначала подумайте над более простой задачей и решите ее: Введите и сложите k чисел.
С матрицами все тоже самое, но вместо ввода одного числа надо читать NxM чисел (очевидно, двумя циклами). Вместо одной переменной суммы у вас будет матрица, к которой вы двумя циклами будете прибавлять. Можно написать функции ReadMatrix, AddMatrix, может так понятнее будет.
Да, вам нужен внешний цикл до k. Внутри он будет вводить матрицу и прибавлять ее в матрицу-сумму.