设 a 为 M 行 N 列的二维数组,编程将 a 中的行和列交换 交换后的数组仍然存放在 a 中,试建立一个类 TDarray ,完成以上操作例如,原始数组以及移动元素之后的数组如下: 12 3 78交换后 5 8 3 9 [编程要求] (1)私有数据成员。 inta [ M ][ M ]:存入二维数组的值, M 为预定义的符号常量。 (2)公有成员函数。 TDarray ( int x [ M ][ M ]):构造函数,用 x 数组初始化数组 a 。状。 (3)在王函数中完成对该类的测试。在程序的开头定义符号常数 M 的值为3。在主函数中定义二维数组 int x [ M ][ M ],用以上数据赋初值。 一个 TDarray 类的对象 arr ,用数组 x 初始化该对象, 通过 arr 调用成员函数,转置并输出转置后的数组。 lenov
时间: 2024-03-16 14:44:23 浏览: 58
好的,您的问题是关于一个类 TDarray 的编程问题,需要实现将二维数组中的行和列进行交换的操作,并且交换后的数组仍然存放在原来的数组 a 中,对吧?我理解的没错的话,下面是我的回答:
首先,我们需要定义一个类 TDarray,私有数据成员为 int a[M][M],用于存储二维数组的值。构造函数 TDarray(int x[M][M]) 用于初始化数组 a,将数组 x 中的值存储到数组 a 中。然后,我们需要实现一个公有成员函数 transpose(),用于将数组 a 进行转置(行和列交换)。具体实现如下:
```
#include <iostream>
using namespace std;
const int M = 3; // 定义符号常量 M
class TDarray {
private:
int a[M][M]; // 存储二维数组的值
public:
TDarray(int x[M][M]) { // 构造函数
for (int i = 0; i < M; i++) {
for (int j = 0; j < M; j++) {
a[i][j] = x[i][j];
}
}
}
void transpose() { // 转置函数
int b[M][M];
for (int i = 0; i < M; i++) {
for (int j = 0; j < M; j++) {
b[j][i] = a[i][j];
}
}
for (int i = 0; i < M; i++) {
for (int j = 0; j < M; j++) {
a[i][j] = b[i][j];
}
}
}
void print() { // 输出函数
for (int i = 0; i < M; i++) {
for (int j = 0; j < M; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
int x[M][M] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
TDarray arr(x); // 用数组 x 初始化对象 arr
cout << "原始数组:" << endl;
arr.print(); // 输出原始数组
arr.transpose(); // 调用转置函数
cout << "转置后的数组:" << endl;
arr.print(); // 输出转置后的数组
return 0;
}
```
在主函数中,我们定义二维数组 int x[M][M],用以上数据赋初值。然后用数组 x 初始化 TDarray 类的对象 arr,通过调用 arr.transpose() 函数实现转置,并通过 arr.print() 函数输出转置后的数组。
阅读全文