C++第三章、实验2

来源:互联网 发布:去除马赛克软件 编辑:程序博客网 时间:2024/04/29 17:43

P81 、实验2: 设计一个4*4魔方程序,让魔方的各行值的和等于各列值的和,并且等于两对角线值的和。例如,以下魔方:

31   3   5     25

9    21  19  15

17  13  11   23

7    27   29   1

各行、各列以及对角线值的和都是64.

#include<iostream>#include<iomanip>using namespace std;class magic{ public:  int f;  int s;  int b;  int m[4][4]; void getdate(); void setfirstmagic(); void generatemagic(); void printmagic();private:int step;int first;int sum;};<pre name="code" class="cpp">
void magic::getdate(){ cout<<"输入初始值:"<<endl; cin>>f>>s; first=f; step=s;}void magic::setfirstmagic(){m[0][0]=f;m[0][1]=f+s;
for(b=1;b<4;b++)m[0][b+1]=m[0][b]+s;m[1][0]=m[0][3]+s;    for(b=0;b<4;b++)m[1][b+1]=m[1][b]+s;m[2][0]=m[1][3]+s;    for(b=0;b<4;b++)m[2][b+1]=m[2][b]+s;m[3][0]=m[2][3]+s;    for(b=0;b<4;b++)
m[3][b+1]=m[3][b]+s;
}void magic::generatemagic(){sum=m[0][0]+m[3][3];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[1][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];<pre name="code" class="cpp">
} void magic::printmagic(){ for(b=0;b<4;b++)cout<<m[0][b]<<setw(4);cout<<endl;for(b=0;b<4;b++)cout<<m[1][b]<<setw(4); cout<<endl;for(b=0;b<4;b++)cout<<m[2][b]<<setw(4);cout<<endl;
for(b=0;b<4;b++)cout<<m[3][b]<<setw(4);cout<<endl;}int main(){  magic date1;date1.getdate();date1.setfirstmagic();date1.generatemagic();date1.printmagic();system("pause");return 0;
}
<img src="http://img.blog.csdn.net/20150628124243649?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYW5uZWdob3N0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" style="font-family: Arial, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255); " alt="" />

0 0