65,211
社区成员
发帖
与我相关
我的任务
分享
///-----------------------------test.cpp
#include<iostream>
#include"Square.h"
using namespace std;
int main()
{
int n;
cout<<"请输入魔方阵的维数:";
cin>>n;
Square s(n);////------------------------------这里出错了
s.magic();
s.print();
}
//////------------------------------Square.h
#ifdef SQUARE_H
#define SQUARE_H
#include<iostream>
using namespace std;
class Square
{
private:
int size;///维数
int **square;///二维数组
public:
Square(int n)
{
size = n;
/////创建动态二维数组
square = new int*[size];
for (int i=0; i<size; ++i)
square[i] = new int[size];
////为数组赋初值
for (int a=0; a<size; ++a)
for (int b=0; b<size; ++b)
square[a][b] = 0;
}
///
///析构
///
~Square()
{
for (int i=0; i<size; ++i)
delete[] square[i];
delete[] square;
}
void magic()
{
if (size%2==1)
oddMagic();
}
///
///奇数魔方阵
///
void oddMagic()
{
int num = size*size;///魔方元素个数
int x = 0;///行数
int y = size/2;///列数
///将1放到方阵中
a[0][y] = 1;
///进行num-1次循环填充方阵
for (int i=2; i<=num; ++i)
{
if ((i-1)%size==0) ++x;
else
{
x = (x-1+size)%size;
y = (y+1)%size;
}
square[x][y] = i;
}
}
///
///打印魔方阵
///
void print()
{
for (int i=0; i<size; i++)
{
for (int j=0; j<size; ++j)
cout<<square[i][j]<<'\t';
cout<<endl;
}
}
};
#endif
#ifdef SQUARE_H
修改为
#ifndef SQUARE_H