标题:帮我指一下魔方程序错在哪
只看楼主
情叶
Rank: 1
来 自:湖北孝感
等 级:新手上路
帖 子:19
专家分:4
注 册:2009-9-4
结帖率:50%
已结贴  问题点数:10 回复次数:4 
帮我指一下魔方程序错在哪
#include "stdafx.h"
#include<iostream>
using namespace std;
class magic
 {  public:
      void getdata();
      void setfirstmagic();
      void generatemagic();
      void printmagic();
private:
  int i,j;
  int m[4][4];
  int step;
  int first;
  int sum;
};
void magic::getdata()
{cout<<"请输入起始值和差值:"<<endl;
 cin>>first>>step;
}
 void magic::setfirstmagic()
 {   
 for(i=0;i<4;i++)
 {
     for(j=0;j<4;j++)
    m[i][j]=first+(i*4+j)*step;

     j=0;
 }
 }
 void magic::generatemagic()
 {
 sum=m[0][0]+m[3][3];
 if(i+j==3||i==j)
 m[i][j]=sum-m[i][j];
 }
 void magic::printmagic()
 {
 if(j<3)
 cout<<m[i][j]<<' ';
 if(j==3)
 cout<<m[i][j]<<endl;
 }
int main(int argc, char* argv[])
{magic g;
g.getdata();
g.setfirstmagic();
g.printmagic();
g.generatemagic();
g.printmagic();
return 0;
}
2.设计一个4*4魔方程序,让魔方的各行值的和等于各列值的和,并且等于两对角线值的和。例如一下魔方:
31    3     5     25
9     21    19    15
17    13    11    23
7     27    29    1
各行、各列以及对角线值的和都是64.
【提示】
    求4*4魔方的一般步骤如下:
(1)设置初始魔方的起始值和相邻元素之间的差值。例如上述魔方的初始魔方的起始值(first)和相邻元素之间的差值(step)分别为:
 first=1
 step=2
   (2)设置初始魔方元素的值。例如上述魔方的初始魔方为:
   1    3    5     7
   9   11   13    15
  17   19   21    23
  25   27   29    31
(3)生成最终魔方。方法如下:
 ①求最大元素值与最小元素值的和sum,该实例的sum是:

 1+31=32

 ②用32减去初始魔方所有对角线上元素的值,然后将结果放在原来的位置,这样就可求得最终魔方。本例最终魔方如下:

  31    3    5     25
   9    21   19    15
  17    13   11    23
   7    27   29     1
写出来后结果输出不对不知错在哪
搜索更多相关主题的帖子: 魔方 
2010-03-31 21:45
情叶
Rank: 1
来 自:湖北孝感
等 级:新手上路
帖 子:19
专家分:4
注 册:2009-9-4
得分:0 
找高手啊

永不言弃,人定胜天
2010-03-31 21:46
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
得分:10 
#include<iostream> //我用的是VC6
using namespace std;//这是我改好的
class magic
{  public:
      void getdata();
      void setfirstmagic();
      void generatemagic();
      void printmagic();
private:
  int i,j;
  int m[4][4];
  int step;
  int first;
  int sum;
};
void magic::getdata()
{cout<<"请输入起始值和差值:"<<endl;
cin>>first>>step;
}
void magic::setfirstmagic()
{   
for(i=0;i<4;i++)
{
     for(j=0;j<4;j++)
    m[i][j]=first+(i*4+j)*step;
}
}
void magic::generatemagic()
{
sum=m[0][0]+m[3][3];
for(i=0;i<4;i++)      //你没有循环
    for(j=0;j<4;j++)
    {
        if(i+j==3||i==j)
    m[i][j]=sum-m[i][j];
    }
}
void magic::printmagic()
{
for(i=0;i<4;i++)           //你没有循环
    for(j=0;j<4;j++)
    {if(j<3)
     cout<<m[i][j]<<' ';
   if(j==3)
   cout<<m[i][j]<<endl;
    }
}
int main(int argc, char* argv[])
{magic g;
g.getdata();
g.setfirstmagic();
g.generatemagic();//你这里错了 函数的顺序错了
g.printmagic();
return 0;
}
2010-04-01 12:35
情叶
Rank: 1
来 自:湖北孝感
等 级:新手上路
帖 子:19
专家分:4
注 册:2009-9-4
得分:0 
谢谢     嘿嘿

永不言弃,人定胜天
2010-04-01 12:55
xieyajiang
Rank: 2
等 级:论坛游民
帖 子:24
专家分:65
注 册:2011-12-8
得分:0 
终于我也懂了 谢谢
2012-03-06 11:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-301217-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.244751 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved