设a为M行N列的二维数组,编程将a中的行和列交换, 交换后的数组仍然存放在a中,试建立一个类TDarray,完成以上操作。 例如,原始数组以及移动元素之后的数组如下: 1 2 3 4 5 6 7 8 9 交换后 1 4 7 2 5 8 3 6 9 [编程要求] (1) 私有数据成员。 int a[M][M]:存入二维数组的值,M为预定义的符号常量。 (2) 公有成员函数。 TDarray(int x[M][M]):构造函数,用x数组初始化数组a。 void move():将数组a的每个元素交换。 void print():按矩阵方式输出数组a。 (3) 在主函数中完成对该类的测试。在程序的开头定义符号常数M的值为3。 在主函数中定义二维数组int x[M][M],用以上数据赋初值。 定义一个TDarray类的对象arr,用数组x初始化该对象, 通过arr调用成员函数,转置并输出转置后的数组。 */ #include<iostream.h> #include<fstream.h> #include<iomanip.h> #define M 3 class TDarray { int a[M][M]; public: TDarray(int x[M][M]); void move(); void print(); }; TDarray::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 TDarray::move() { /********** Begin **********/ /********** End ***********/ } void TDarray::print() { for(int i=0;i<M;i++) { for(int j=0;j<M;j++) cout<<setw(4)<<a[i][j]; cout<<'\n'; } //此处将结果输出到文件"bc02.in",请勿改动,否则影响判分 ofstream outf("bc02.in"); for(i=0;i<M;i++) { for(int j=0;j<M;j++) outf<<setw(4)<<a[i][j]; outf<<'\n'; } outf.close(); } void main() { int x[M][M]={1,2,3,4,5,6,7,8,9}; TDarray arr(x); arr.move(); arr.print(); }
时间: 2024-03-17 10:39:56 浏览: 86
我理解你的问题是让我完成一个类TDarray,实现将二维数组a中的行和列进行交换,并输出交换后的数组。下面是完整代码实现:
```cpp
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
#define M 3
class TDarray {
private:
int a[M][M];
public:
TDarray(int x[M][M]);
void move();
void print();
};
TDarray::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 TDarray::move() {
// 交换行和列
for(int i=0; i<M; i++) {
for(int j=i; j<M; j++) {
int temp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = temp;
}
}
}
void TDarray::print() {
for(int i=0; i<M; i++) {
for(int j=0; j<M; j++) {
cout << setw(4) << a[i][j];
}
cout << '\n';
}
// 将结果输出到文件"bc02.in"
ofstream outf("bc02.in");
for(int i=0; i<M; i++) {
for(int j=0; j<M; j++) {
outf << setw(4) << a[i][j];
}
outf << '\n';
}
outf.close();
}
int main() {
int x[M][M] = {{1,2,3},{4,5,6},{7,8,9}};
TDarray arr(x);
arr.move();
arr.print();
return 0;
}
```
在上述代码中,构造函数`TDarray(int x[M][M])`用于初始化二维数组a,函数`move()`实现行列交换,函数`print()`输出交换后的结果,并将结果输出到文件"bc02.in"中。在`main()`函数中,我们首先定义了一个3x3的二维数组x,然后用数组x初始化了一个TDarray对象arr,接着调用`arr.move()`进行行列交换,最后调用`arr.print()`输出结果到屏幕和文件中。
阅读全文