Problem1401--类的练习--定义数组类,实现二位数组的旋转(运算符重载)

1401: 类的练习--定义数组类,实现二位数组的旋转(运算符重载)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 21  Solved: 9
[Submit] [Status] [Web Board] [Creator:]

Description

定义一个数组类Array,实现二维数组的重载。通过重载运算符“+”,顺时针旋转90度,即使得元素b[i][j]变成b[j][M-1-i]。
通过重载运算符“-”,实现逆时针旋转90度,即使得元素b[i][j]变成b[M-1-J][i]。具体要求如下:
1)私有数据成员
int b[M][M]   //数组成员,存放数组
2)公有成员函数
Array((int *p)[M])   //构造函数,以形参初始化数据成员
void operator+()//重载函数,使得数组顺时针旋转90度
friend void  operator-(Array &b) //重载函数,使得数组逆时针旋转90度
void  print()//输出数组成员
在主函数中测试定义的类,输出原始数组和旋转之后的数组
int main(){
int a[][M]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
Array arr(a);
arr.print();
cout<<'\n';
+arr;
arr.print();
cout<<'\n';
-arr;
arr.print();
return 0;
}



Sample Output

1  2  3  4
5  6  7  8
9  10  11  12
13  14  15  16

13  9  5  1
14  10  6  2
15  11  7  3
16  12  8  4

1  2  3  4
5  6  7  8
9  10  11  12
13  14  15  16

HINT

输出二维数组格式如下
for(int i=0;i<M;i++){
for(int j=0;j<M;j++)
cout<<b[i][j]<<"  ";
cout<<'\n';
}


Source/Category

 

[Submit] [Status]