티스토리 뷰
#include <stdio.h>
#include <iostream>
#include <crtdbg.h>
using namespace std;
class cMagicSquare
{
public:
cMagicSquare(int _dim);
~cMagicSquare();
private:
int** mP;
int mDim;
public:
void setDim(int _dim);
void setMagic();
int getDim();
void showMagic();
};
cMagicSquare::cMagicSquare(int _dim)
{
mDim = _dim;
mP = new int*[_dim];
for( int i = 0; i < _dim; i++ )
{
mP[i] = new int[_dim];
}
}
void cMagicSquare::setDim(int _dim)
{
mDim = _dim;
}
void cMagicSquare::setMagic()
{
int x,y;
x = getDim() / 2;
y = 0;
for( int i = 0; i < getDim() * getDim(); i++ )
{
mP[x][y] = i + 1;
if( (i + 1) % getDim() == 0 )
y++;
else
x++;
if( x == getDim() )
x = 0;
if( y < 0 )
y = getDim() - 1;
}
}
int cMagicSquare::getDim()
{
return mDim;
}
void cMagicSquare::showMagic()
{
for( int i = 0; i < getDim(); i++ )
{
for( int j = 0; j < getDim(); j++ )
{
cout<<mP[j][i]<<"\t";
}
cout<<endl;
}
}
cMagicSquare::~cMagicSquare()
{
for( int i = 0; i < mDim; i++ )
delete[] mP[i];
delete[] mP;
}
void main()
{
#if defined(DEBUG) | defined(_DEBUG)
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#endif
char input[20];
scanf("%c", &input);
cMagicSquare mg(atoi(input));
mg.setMagic();
mg.showMagic();
}
'Programming > 수학&물리' 카테고리의 다른 글
두 원의 충돌(원과 점의 충돌) (0) | 2015.11.21 |
---|---|
점과 직선사의 거리 (0) | 2015.11.21 |
각도에따라서 회전시키기! (0) | 2015.01.07 |
캐릭터를 마우스 좌표로 부드럽게 이동시켜보자. (0) | 2015.01.07 |
직선의 회전운동!(점2개와 각도를 알고있을때) (0) | 2015.01.07 |