设计一个4*4魔方程序,让魔方的各行值和等于各列值的和,并且等于两对角线值的和。例如以下魔方: 31 3 5 25 9 21 19 15 17 13

#include <iostream> 

 #include<iomanip>

 using namespace std;

 class wsq36_magic 

 {

 public: void wsq36_getdata();

         void wsq36_setfirstmagic();  

         void wsq36_generatemagic();  

         void wsq36_printmagic();  

 private: int wsq36_m[4][4];

  int wsq36_step;  

  int wsq36_first;

  int wsq36_sum;

  };

 void wsq36_magic::wsq36_getdata()

 {

cout << "输入4*4魔方起始值:";

    cin >> wsq36_first;

cout << "输入相邻元素差值:";

cin >> wsq36_step;

  }

 void wsq36_magic::wsq36_setfirstmagic()

  {

  int wsq36_i, wsq36_j;

  int wsq36_tmp;

      wsq36_tmp = wsq36_first;

      for (wsq36_i = 0; wsq36_i < 4; wsq36_i++)

      {

  for (wsq36_j = 0; wsq36_j < 4; wsq36_j++)

          { wsq36_m[wsq36_i][wsq36_j] = wsq36_tmp;

  wsq36_tmp += wsq36_step; }

       }

  }

 void wsq36_magic::wsq36_generatemagic()

  {

  wsq36_sum = wsq36_m[0][0] + wsq36_m[3][3];

      for (int wsq36_i = 0, wsq36_j = 0; wsq36_i < 4; wsq36_i++, wsq36_j++)

  wsq36_m[wsq36_i][wsq36_j] = wsq36_sum - wsq36_m[wsq36_i][wsq36_j];

      for (int wsq36_i = 0, wsq36_j = 3; wsq36_i < 4; wsq36_i++, wsq36_j--)

  wsq36_m[wsq36_i][wsq36_j] = wsq36_sum - wsq36_m[wsq36_i][wsq36_j];

  }

 void wsq36_magic::wsq36_printmagic()

  {

  int wsq36_i, wsq36_j;

      for (wsq36_i = 0; wsq36_i < 4; wsq36_i++)

      { for (wsq36_j = 0; wsq36_j < 4; wsq36_j++)

       { cout << setw(5) << wsq36_m[wsq36_i][wsq36_j]; }

       cout << endl;

  }

  }

 int main()

  {

  wsq36_magic A;

  A.wsq36_getdata();

      A.wsq36_setfirstmagic();

      cout << "初始魔方如下:" << endl;

      A.wsq36_printmagic();

      A.wsq36_generatemagic();

      cout << "最终魔方如下:" << endl;

  1. wsq36_printmagic();

cout<<"wsq36"<<endl;

      system("pause");

      return 0;

  }

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值