Нужна помощь в С++
Мне нужно транспонировать двумерный динамический массив.
Вот сам двумерный динамический массив.
----------------------------------------------------------------------------------
#include
#include
using namespace std;
void main()
{
int rows ;
int cols ;
cout « "enter rows" « endl;
cin » rows;
cout « "enter cols" « endl;
cin » cols;
int **mas = new int* [rows];
for (int i = 0; i < rows; i++)
{
mas[i] = new int[cols];
}
///////////////////////////////
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
mas[i][j] = rand() % 40;
}
}
///////////////////////////////
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
cout « mas[i][j] « "\t";
}
cout « endl;
}
///////////////////////////////
for (int i = 0; i < rows; i++)
{
delete[] mas[i];
}
delete[]mas;
system("pause");
}

27 Июн 2019 в 19:44
232 +1
0
Ответы
1

Чтобы транспонировать двумерный динамический массив, вам потребуется создать новый массив, который будет иметь количество строк равное количеству столбцов оригинального массива и количество столбцов равное количеству строк оригинального массива.

Ниже приведен пример кода для транспонирования двумерного динамического массива:

#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
int rows;
int cols;
cout << "Enter rows: " << endl;
cin >> rows;
cout << "Enter cols: " << endl;
cin >> cols;
int **mas = new int* [rows];
for (int i = 0; i < rows; i++) {
mas[i] = new int[cols];
}
// Fill the array with random values
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
mas[i][j] = rand() % 40;
}
}
// Print the original array
cout << "Original Array:" << endl;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << mas[i][j] << "\t";
}
cout << endl;
}
// Transpose the array
int **transposed = new int* [cols];
for (int i = 0; i < cols; i++) {
transposed[i] = new int[rows];
for (int j = 0; j < rows; j++) {
transposed[i][j] = mas[j][i];
}
}
// Print the transposed array
cout << "Transposed Array:" << endl;
for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
cout << transposed[i][j] << "\t";
}
cout << endl;
}
// Free memory
for (int i = 0; i < rows; i++) {
delete[] mas[i];
}
delete[] mas;
for (int i = 0; i < cols; i++) {
delete[] transposed[i];
}
delete[] transposed;
system("pause");
return 0;
}

Этот код создает новый массив transposed, который будет содержать транспонированную версию оригинального массива. После вывода транспонированного массива освобождаются память для обоих массивов.

21 Апр в 00:37
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 91 947 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир