Вопрос задан 05.11.2023 в 06:12. Предмет Информатика. Спрашивает Мороз Вадим.

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; }
0 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;

}


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Ваш код уже содержит чтение входных данных в двумерный массив (или вектор, который в данном случае функционирует как двумерный массив). Чтобы транспонировать эту матрицу, вы должны поменять местами элементы по диагонали. Это можно сделать с помощью вложенных циклов `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> t(n, vector(n));

// Чтение входных данных 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`, которая меняет местами два значения. Это удобный способ обмена значениями между двумя переменными.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос