34.建立一个 MATRIX,生成并显示一个螺旋方阵。螺旋方阵如下图所示,起始数置于方阵的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。
具体要求如下:
- 私有数据成员
- int a[20] [20]:二维整型数组存放螺旋方阵。
- int startnum:螺旋方阵的起始数。
- int n:存放方针的层数。
- 公有成员函数
- MATRIX (int s, int m ):构造函数,初始化成员数据 startnum 和 n。
- void process():生成起始数为 startnum 的 n 行螺旋方阵。
- void print():输出螺旋方阵。
- 在主程序中定义 MATRIX 类的对象 t 对该类进行测试
#include<iostream>
#include<iomanip>
using namespace std;
class MATRIX{
int startnum,n,a[20][20];
public:
MATRIX(int startnum,int n){
this->startnum=startnum;
this->n=n;
}
void process(){
int k = startnum;
for(int i=0;i<(n+1)/2;i++){
for(int j=i;j<n-i;j++){
a[i][j]=k++;
}
for(int j=i+1;j<n-i-1;j++){
a[j][n-i-1]=k++;
}
for(int j=n-i-1;j>i;j--){
a[n-i-1][j]=k++;
}
for(int j=n-i-1;j>=i+1;j--){
a[j][i]=k++;
}
}
}
void print(){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<setw(4)<<a[i][j];
}
cout<<endl;
}
}
};
int main(){
MATRIX m(1,5);
m.process();
m.print();
return 0;
}