c++面向对象程序设计编程题_c++面向对象程序设计邵兰洁版答案

(22) 2024-06-10 10:01:01

33.建立一个类 PHALANX,生成并显示一个折叠方阵。折叠方阵如下图所示。折叠方阵的生成过程为:起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。
c++面向对象程序设计编程题_c++面向对象程序设计邵兰洁版答案 (https://mushiming.com/)  第1张

具体要求如下:

  1. 私有数据成员
  • int (*p)[20]:指向按照折叠规律存放方阵的二维整型数组。
  • int startnum:折叠方阵的起始数。
  • int n:存放方针的层数。
  1. 公有成员函数
  • PHALANX (int s, int m ):构造函数,初始化成员数据。
  • void process():生成起始数为 startnum 的 n 行方阵。
  • void print():输出折叠方阵。
  • ~ PHALANX( ):析构函数。
  1. 在主程序中对该类进行测试。
#include<iostream> #include<iomanip> using namespace std; class PHALANX{ 
    int (*p)[20],startnum,n; public: PHALANX(int s,int m):startnum(s),n(m){ 
    p = new int[m][20]; } void process(){ 
    for(int i=0;i<n;i++){ 
    int k=i*i+startnum; for(int j=0;j<=i;j++){ 
    p[j][i]=k++; } for(int j=i-1;j>=0;j--){ 
    p[i][j]=k++; } } } //11.28-1 /* void process(){ for(int i=0;i<n;i++){ for(int j=0;j<i+1;j++){ p[j][i]=i*i+startnum+j; } for(int k=0;k<i;k++){ p[i][k]=(i+1)*(i+1)+startnum-1-k; } } } */ //11.28-2 /* void process(){ int index=startnum; for(int i=0;i<n;i++){ for(int j=0;j<i+1;j++){ p[j][i]=index++; } for(int k=0;k<i;k++){ p[i][i-k-1]=index++; } } } */ /* void process(){ int k = startnum; for(int i=0;i<n;i++){ int j; for(j=0;j<=i;j++){ p[j][i]=k++; } for(j=i-1;j>=0;j--){ p[i][j]=k++; } } } */ void print(){ 
    for(int i=0;i<n;i++){ 
    for(int j=0;j<n;j++){ 
    cout<<setw(4)<<p[i][j]<<" "; } cout<<endl; } } ~PHALANX(){ 
    if(p)delete[]p; } }; int main(){ 
    PHALANX p(5,4); p.process(); p.print(); return 0; } 
THE END

发表回复