C/C++

Отразить двумерный массив с размером m x n относительно побочной диагонали

Отразить двумерный массив с размером m x n относительно побочной диагонали
Если диагональ верхний правый - левый нижний
B(i, j)=A(m-i+1,n-j+1)
В - перетасованный массив, А - исходный
Кажется так.
ВН
Виктор Назаров
10 244
Лучший ответ
Евгений Стариков а если отразить не саму матрицу, а переставить внутри массива все элементы, чтоб они отразились по побочной диагонали?
Андрей . ◉ Все Вы О! - как правы! Ведь задача по сути на транспонирование матрицы, и определение диагонали, в общем-то, роли не играет!
С квадратными матрицами всё понятно - у них только одна побочная диагональ, как и одна главная. В этом случае надо поменять местами элементы а [i][j] и a[n-1-j][n-1-i], что делается, естественно, безо всяких притянутых за уши дополнительных массивов при помощи, скажем, временной переменной temp:
nmin = n - 1; for (i = 0; i < n; i++)
{ k = nmin - i; for (j = 0; j < n; j++)
{ temp = a[i][j]; l = nmin - j;
a[i][j] = a[l][k]; a[l][k] = temp; } }
Всё просто, ничего лишнего! И никакого отношения к транспонированию матриц, как тут блеял один клоун и тролль, эта операция не имеет! Транспортирование матрицы - это обмен её элементов а [i][j] и a[j][i], то есть в случае квадратных матриц их отражение относительно главной диагонали, а вовсе никакой не побочной!
Если количества строк и столбцов в матрице не совпадают, то сразу возникает неоднозначность в выборе действий, которую можно устранить начальным соглашением, а лучше вообще этого не делать, поскольку в неквадратных матрицах, строго говоря, нет ни главных диагоналей, ни побочных!
в прямоугольной матрице конечно можно провести диагональ, но отражение относительно нее изменит размер итоговой матрицы, если была n строк на m столбцов, то станет m строк на n столбцов. и обычно этим промышляют только при n=m, то есть матрица квадратная.
само отражение будет что-то типа этого https://onlinegdb.com/lM_JyLCPc
Stas *поп*
Stas *поп*
5 910
Салават Ламинат что получается, то и отображается. Им для физкультуры всё подойдёт
Stas *поп* ))) мы академиев не кончали :)
Андрей . ◉ Все Вы О! - как правы! Ведь задача по сути на транспонирование матрицы, и определение диагонали, в общем-то, роли не играет!