Нужна помощь в С++
Мне нужно транспонировать двумерный динамический массив.
Вот сам двумерный динамический массив.
----------------------------------------------------------------------------------
#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
259 +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 Апр 2024 в 00:37
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир