请求C++高手一道魔方的编程题(急需)

来源:百度知道 编辑:UC知道 时间:2024/05/29 04:42:01
编写一个程序,能实现:
a) 从文件读入一个M行N列的二维数组
b) 求该二维数组每行元素的最大值和最小值及其位置
c) 求该二维数组每列元素的最大值和最小值及其位置
d) 求该二维数组每行元素的和
e) 求该二维数组每列元素的和
f) 计算并输出一个N×N魔方阵(3<=N<=8)
g) 以上所有功能都应从菜单中选择执行
10
说明:
(1) 一个魔方阵,各行值的总和等于各列值的总和,并且等于两对角线值的总和。求4×4魔方,可参考以下步骤完成:
a.设魔方起始1和相邻元素之间的差值1;
b.利用一个设置初始值形成初始4×4魔方;
c.先求魔方中最大值和最小值之和,本题为1+16=17,再用求得的和减去所有对角线的值,将结果放在原位置,这样就求得最终魔方;
d.最终魔方为:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
用C++编写

#include<iostream>
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()
{
cin>>first>>step>>sum;

}
void magic::setfirstmagic()
{

int temp=first;
for(int i=0;i<4;i++)
{
for(int n=0;n<4;n++)
{
m[i][n]=temp;
temp+=step;
}
}
}
void magic::generatemagic()
{

for(int i=0,int n=0;i<4,n<4;i++,n++)
{

m[i][i]=sum-m[i][i];
}
for(i=0, n=3;i<4;i++,n--)
{
m[i][n]=sum-m[i][n];
}
}
void magic::printmagic()
{

for(int i=0;i<4;i++)
{
for(int n=0;n<4;n++)
{cout<<m[i][n]<&l