该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我是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;
};