matlab 幻方乱置,[原创]做了一个幻方

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

我是C++初学者,评价一下:

#include "iostream"

using namespace std;

int enter;

class Matrix

{

public:

void Matrix1();

void Matrix2();

void Matrix3();

void display();

void change();

void sMatrix(int sMatrixX , int sMatrixY , int sMatrixXY , int sMatrixA);

private:

int MatrixXY;

int MatrixXYb;

int MatrixXYc;

int MatrixXYd;

int MatrixX;

int MatrixY;

int IN;

int INS;

int RGT;

int TEMP1;

int TEMP2;

int Array[30][30];

};

void Matrix::Matrix1()

{

MatrixXY=enter;

sMatrix(0,0,MatrixXY,0);

};

void Matrix::Matrix2()

{

MatrixXY=enter;

MatrixX=1;

MatrixY=1;

for (MatrixY=1;MatrixY<=MatrixXY;MatrixY++)

{

for (MatrixX=1;MatrixX<=MatrixXY;MatrixX++)

{

if((MatrixX+3)%4==0 && (MatrixY+3)%4==0)

{

RGT=1;

};

if(MatrixX%4==0 && (MatrixY+3)%4==0)

{

RGT=1;

};

if((MatrixX+3)%4==0 && MatrixY%4==0)

{

RGT=1;

};

if(MatrixX%4==0 && MatrixY%4==0)

{

RGT=1;

};

if((MatrixX+2)%4==0 && (MatrixY+2)%4==0)

{

RGT=1;

};

if((MatrixX+1)%4==0 && (MatrixY+2)%4==0)

{

RGT=1;

};

if((MatrixX+2)%4==0 && (MatrixY+1)%4==0)

{

RGT=1;

};

if((MatrixX+1)%4==0 && (MatrixY+1)%4==0)

{

RGT=1;

};

//

switch(RGT)

{

case 1:

{

Array[MatrixX][MatrixY]=MatrixXY*MatrixXY+1-MatrixXY*(MatrixY-1)-MatrixX;

RGT=0;

break;

};

case 0:

{

Array[MatrixX][MatrixY]=MatrixXY*(MatrixY-1)+MatrixX;

break;

};

};

};

};

};

void Matrix::Matrix3()

{

MatrixXY=enter;

MatrixXYb=MatrixXY/2;

MatrixXYc=(MatrixXYb+1)/2;

MatrixXYd=(MatrixXY-2)/4;

sMatrix(0,0,MatrixXYb,0);

sMatrix(MatrixXYb,MatrixXYb,MatrixXYb,1);

sMatrix(MatrixXYb,0,MatrixXYb,2);

sMatrix(0,MatrixXYb,MatrixXYb,3);

//

for (MatrixY=1;MatrixY<=MatrixXYb;MatrixY++)

{

for (MatrixX=1;MatrixX<=MatrixXY;MatrixX++)

{

if (MatrixX<=MatrixXYd && MatrixY!=MatrixXYc)

{

change();

};

if (MatrixX>=MatrixXYb+MatrixXYc+2-MatrixXYd && MatrixX<=MatrixXYb+MatrixXYc)

{

change();

};

if (MatrixX>=MatrixXYc && MatrixX<=(MatrixXY-2)/2 && MatrixY==MatrixXYc)

{

change();

};

};

};

};

//

void Matrix::display()

{

for (MatrixY=1;MatrixY<=MatrixXY;MatrixY++)

{

for (MatrixX=1;MatrixX<=MatrixXY;MatrixX++)

{

if(Array[MatrixX][MatrixY]/10>=1 && Array[MatrixX][MatrixY]/10<10)

{

cout<

};

if(Array[MatrixX][MatrixY]/1>=1 && Array[MatrixX][MatrixY]/1<10)

{

cout<

};

cout<

};

cout<

};

};

void Matrix::change()

{

TEMP1=Array[MatrixX][MatrixY];

TEMP2=Array[MatrixX][MatrixY+MatrixXYb];

Array[MatrixX][MatrixY]=TEMP2;

Array[MatrixX][MatrixY+MatrixXYb]=TEMP1;

};

void Matrix::sMatrix(int sMatrixX , int sMatrixY , int sMatrixXY , int sMatrixA)

{

MatrixX=sMatrixX+(sMatrixXY+1)/2;

MatrixY=sMatrixY+1;

INS=1;

for (IN=1;IN<=sMatrixXY*sMatrixXY;IN++)

{

Array[MatrixX][MatrixY]=IN+sMatrixXY*sMatrixXY*sMatrixA;

INS=INS+1;

if (INS==sMatrixXY+1)

{

INS=1;

MatrixX=MatrixX-1;

MatrixY=MatrixY+2;

};

if (MatrixX==sMatrixX+sMatrixXY)

{

MatrixX=sMatrixX+1;

}

else

{

MatrixX=MatrixX+1;

};

if (MatrixY==sMatrixY+1)

{

MatrixY=sMatrixY+sMatrixXY;

}

else

{

MatrixY=MatrixY-1;

};

};

};

int main()

{

start:

cout<

cin>>enter;

Matrix matrix;

//

if(enter>=3 && enter<=29)

{

if(enter%2==1)

{

matrix.Matrix1();

};

//

if(enter%4==0)

{

matrix.Matrix2();

};

//

if((enter-2)%4==0)

{

matrix.Matrix3();

//

};

matrix.display();

goto start;

}

else

{

cout<

goto start;

};

return 0;

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值