조건문은 반지름이 중심이 (r,r) 이고 반지름이 r인 원을 기준으로 하고 있으나
시작범위는 0 부터 r 까지이므로 제대로 구해질수가 없죠.
아래와 같이 하시면 되겠습니다.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int r=20;
int **CircleArray = new int*[r*2+1];
for (int i = 0; i < r*2+1; i++) {
CircleArray[i]= new int[r*2+1];
}
for(int nY = 0; nY<=r*2; nY++)
{
for(int nX = 0; nX<=r*2; nX++)
{
if (r*r > ((nX-r)*(nX-r) + (nY-r)*(nY-r)))
{
CircleArray[nX][nY] = 1;
}
else
{
CircleArray[nX][nY] = 0;
}
}
}
TMemo *Memo1 = new TMemo(this);
Memo1->Parent=this;
Memo1->Align=alClient;
Memo1->Lines->Clear();
Memo1->Font->Name="SYSTEM";
for(int nY = 0; nY <= r*2; nY++)
{
Memo1->Lines->Add("");
for(int nX = 0; nX <= r*2; nX++)
{
if (CircleArray[nX][nY])
{
Memo1->Lines->Strings[nY]=Memo1->Lines->Strings[nY]+"■";
}
else
{
Memo1->Lines->Strings[nY]=Memo1->Lines->Strings[nY]+"□";
}
}
}
}
sunje 님이 쓰신 글 :
: 안녕하세요...
: 궁금한 것이 있어서 질문드리고자 합니다.
:
: 원을 그려서 2차원 배열에 담으려고 하는데요
: 일단 반지름을 r = 10로 잡고요 반지름 이내의 범위에 있는 것은 1로 하고 범위 밖의 값은 0으로 해서
: 2차원 배열에 저장하고 아래와 같이 출력을 받으려고 하는데요
:
: □□□□□□□■■■■■■□□□□□□□
: □□□□□■■■■■■■■■■□□□□□
: □□□■■■■■■■■■■■■■■□□□
: □□■■■■■■■■■■■■■■■■□□
: □□■■■■■■■■■■■■■■■■□□
: □■■■■■■■■■■■■■■■■■■□
: □■■■■■■■■■■■■■■■■■■□
: ■■■■■■■■■■■■■■■■■■■■
: ■■■■■■■■■■■■■■■■■■■■
: ■■■■■■■■■■■■■■■■■■■■
: ■■■■■■■■■■■■■■■■■■■■
: ■■■■■■■■■■■■■■■■■■■■
: ■■■■■■■■■■■■■■■■■■■■
: □■■■■■■■■■■■■■■■■■■□
: □■■■■■■■■■■■■■■■■■■□
: □□■■■■■■■■■■■■■■■■□□
: □□■■■■■■■■■■■■■■■■□□
: □□□■■■■■■■■■■■■■■□□□
: □□□□□■■■■■■■■■■□□□□□
: □□□□□□□■■■■■■□□□□□□□
:
: int r = 10;
: for(int nX = 0; nX<r; nX++)
: {
: for(int nY = 0; nY<r; nY++)
: {
: (r*r > (nX-r)*(nX-r) + (nY-r)*(nY-r))? 1 : 0;
: }
: }
:
: 위와 같은 방법으로 시도해 보았으나 잘 안되네요...
:
:
|