C/C++
Транспонировать матрицу относительно
побочной диагонали с помощью цикла do while, не использовать дополнительных матриц и массивов.
Так?
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int matrix[][5] = {
{ 1, 3, 7, 13, 0 },
{ 5, 9, 15, 0, 20 },
{ 11, 17, 0, 18, 12 },
{ 19, 0, 16, 10, 6 },
{ 0, 14, 8, 4, 2 },
};
for (const auto& row : matrix) {
for (const auto value : row) cout << setw(4) << value;
puts("\n");
}
puts("\n");
auto n = size(matrix);
for (auto i = 0U; i < n - 1; ++i)
for (auto j = 0U; j < n - 1 - i; ++j) {
matrix[i][j] ^= matrix[n - 1 - j][n - 1 - i];
matrix[n - 1 - j][n - 1 - i] ^= matrix[i][j];
matrix[i][j] ^= matrix[n - 1 - j][n - 1 - i];
}
for (const auto& row : matrix) {
for (const auto value : row) cout << setw(4) << value;
puts("\n");
}
system("pause > nul");
}
Или так?
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int matrix[][5] = {
{ 1, 3, 7, 13, 0 },
{ 5, 9, 15, 0, 20 },
{ 11, 17, 0, 18, 12 },
{ 19, 0, 16, 10, 6 },
{ 0, 14, 8, 4, 2 },
};
for (const auto& row : matrix) {
for (const auto value : row) cout << setw(4) << value;
puts("\n");
}
puts("\n");
auto n = size(matrix) - 1;
for (auto i = 0U, k = n; i < n; ++i, --k) {
for (auto j = 0U, m = n; j < n - i; ++j, --m) {
swap(matrix[i][j], matrix[k][m]);
}
}
for (const auto& row : matrix) {
for (const auto value : row) cout << setw(4) << value;
puts("\n");
}
system("pause > nul");
}
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int matrix[][5] = {
{ 1, 3, 7, 13, 0 },
{ 5, 9, 15, 0, 20 },
{ 11, 17, 0, 18, 12 },
{ 19, 0, 16, 10, 6 },
{ 0, 14, 8, 4, 2 },
};
for (const auto& row : matrix) {
for (const auto value : row) cout << setw(4) << value;
puts("\n");
}
puts("\n");
auto n = size(matrix);
for (auto i = 0U; i < n - 1; ++i)
for (auto j = 0U; j < n - 1 - i; ++j) {
matrix[i][j] ^= matrix[n - 1 - j][n - 1 - i];
matrix[n - 1 - j][n - 1 - i] ^= matrix[i][j];
matrix[i][j] ^= matrix[n - 1 - j][n - 1 - i];
}
for (const auto& row : matrix) {
for (const auto value : row) cout << setw(4) << value;
puts("\n");
}
system("pause > nul");
}
Или так?
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int matrix[][5] = {
{ 1, 3, 7, 13, 0 },
{ 5, 9, 15, 0, 20 },
{ 11, 17, 0, 18, 12 },
{ 19, 0, 16, 10, 6 },
{ 0, 14, 8, 4, 2 },
};
for (const auto& row : matrix) {
for (const auto value : row) cout << setw(4) << value;
puts("\n");
}
puts("\n");
auto n = size(matrix) - 1;
for (auto i = 0U, k = n; i < n; ++i, --k) {
for (auto j = 0U, m = n; j < n - i; ++j, --m) {
swap(matrix[i][j], matrix[k][m]);
}
}
for (const auto& row : matrix) {
for (const auto value : row) cout << setw(4) << value;
puts("\n");
}
system("pause > nul");
}
Похожие вопросы
- СИ. Можно ли как-то транспонировать матрицу, не создавая новую
- Найти максимальный элементы в строке матрицы
- Чёт не пойму, как сделать рандомные значения матрицы через массив, прошу доработать, пж прогу!
- Матрицы, массивы C++
- Программирование матриц на С++
- C++Дана целочисленная матрица размера mn. Найти матрицу, получающуюся перестановкой столбцов
- Не работает транспонирование матрицы. Исправить программу
- Дана матрица целых чисел 8×8. Найти количество простых чисел в этой матрице
- Помогите разобраться с кодом. На основании чего происходит приоритет перемножения матриц
- Помогите пожалуйста с 2меррый Матрицами .В языке С