#include <iostream>
#include <string>
using namespace std;
class Magic
{
public:
void getdata();
void setfirstmagic();
void generatemagic();
void printmagic();
private:
int m[4][4];
int step;
int first;
int sum;
};
void Magic::getdata()
{
cout<<"请输入魔方初始状态的起始值first:"<<endl;
cout<<endl;
cin>>first;
cout<<endl;
cout<<"请输入相邻元素的差值step:"<<endl;
cout<<endl;
cin>>step;
cout<<endl;
}
void Magic::setfirstmagic()
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
m[0][0] = first;
m[i][j] = m[i][j-1]+step;
}
}
printmagic();
}
void Magic::printmagic()
{
for (int i = 0; i < 4; i++)
{
int k = 0;
for (int j = 0; j < 4; j++)
{
printf("m",m[i][j]);
k += 1;
if(k%4 == 0)
cout<<endl;
}
}
}
void Magic::generatemagic()
{
int min,max;
min = max = m[0][0];
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if(m[i][j] < min) min = m[i][j];
else max = m[i][j];
}
}
sum = max + min;
m[0][0] = sum -m[0][0];
m[0][3] = sum -m[0][3];
m[1][1] = sum -m[1][1];
m[1][2] = sum -m[0][2];
m[2][1] = sum -m[2][1];
m[2][2] = sum -m[2][2];
m[3][0] = sum -m[3][0];
m[3][3] = sum -m[3][3];
}
int main()
{
Magic mgc;
mgc.getdata();
cout<<"魔方阵的初始状态:"<<endl;
cout<<endl<<endl;
mgc.setfirstmagic();
cout<<"魔方阵的最终状态:"<<endl;
mgc.generatemagic();
cout<<endl<<endl;
mgc.printmagic();
return 0;
}