C++ Транспонировать квадратную матрицу Дан двумерный массив размером n×n. Транспонируйте его и
результат запишите в этот же массив (транспонированная матрица из исходной получается, если каждую строчку исходной матрицы записать в виде столбца в том же порядке). Вспомогательный массив использовать нельзя. Ввод и вывод матрицы t уже написаны, необходимо только написать трнаспонирование матрицы t. Входные данные На первой строке входных данных задано натуральное число n≤500. В следующих n строках задано по n натуральных чисел — элементы массива. Выходные данные Выведите ответ на задачу. Примеры Ввод 3 1 2 3 4 5 6 7 8 9 Вывод: 1 4 7 2 5 8 3 6 9 using namespace std; int main() { int n; cin >> n; vector > t(n, vector (n)); int i1 = 0, j1 = 0; for (int i = 0; i < t.size(); ++i){ for (int j = 0; j < t[i].size(); ++j){ cin >> t[i][j]; } } *************************************************** необходимая часть кода ************************************************ for (int i = 0; i < t.size(); ++i){ for (int j = 0; j < t[i].size(); ++j){ cout << t[i][j] << " "; } cout << endl; } return 0; }Ответы на вопрос
Ответ:
Объяснение:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int N;
cin >> N;
vector<vector<int>> a(N,vector<int> (N,0));
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
cin>> a[i][j];
for (int i = 0; i < N; i++) {
for (int j = i; j < N; j++)
swap(a[j][i], a[i][j]);
}
cout << endl;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++)
cout << a[i][j] << " ";
cout << endl;
}
return 0;
}

Ваш код уже содержит чтение входных данных в двумерный массив (или вектор, который в данном случае функционирует как двумерный массив). Чтобы транспонировать эту матрицу, вы должны поменять местами элементы по диагонали. Это можно сделать с помощью вложенных циклов `for`, где внешний цикл будет идти по строкам, а внутренний - по столбцам.
Вот как вы можете это сделать:
```cpp for (int i = 0; i < n; ++i) { for (int j = i+1; j < n; ++j) { // Поменяем местами элементы по диагонали swap(t[i][j], t[j][i]); } } ```
Полный код будет выглядеть следующим образом:
```cpp using namespace std;
int main() {
int n;
cin >> n;
vector
// Чтение входных данных for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { cin >> t[i][j]; } }
// Транспонирование матрицы for (int i = 0; i < n; ++i) { for (int j = i+1; j < n; ++j) { // Поменяем местами элементы по диагонали swap(t[i][j], t[j][i]); } }
// Вывод результата for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { cout << t[i][j] << " "; } cout << endl; }
return 0; } ```
Обратите внимание, что внутри вложенного цикла `for` используется функция `swap`, которая меняет местами два значения. Это удобный способ обмена значениями между двумя переменными.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
