회귀함수 없이 타워를 만들고있습니다..
타워에서 판들이 움직이는 경로를 찍고있는데
반복되는 특성을 발견해서 for문으로 만들었습니다.
반복되는 특성은
<BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr><BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr><BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr><BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr><BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr><BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr><BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE>★ ★
▤ --함수A--> s1 --함수B--> s1
▒
</BLOCKQUOTE>기본형인 s(▤)가 함수A를 통과하고 (2->3으로 3->2로 바뀝니다★)
그리고 A다음에 s1이 추가됩니다.
그후 ★)가 함수B를 통과하고(1->2 2->3 3->1로 바뀝니다.▒)
그리고 s1다음에 ▒이 추가됩니다.
그래서
★
s1
▒
모양이되고 이값은 다시 ▤ 에 저장됩니다.
for의 i가 ++되고 앞서 저장된 ▤ 값을이용해서 또 새로운 ▤ 을 얻어내고....원하는 층수까지의 ▤ 를 구합니다.
이런식으로 만드려고했는데 너무 어렵네요 ㅠㅠ...
출력된 값은..
대략
4층이면
1->2
3->2
1->3
.
.
. 쭉쭉쭉..
.
2->3
이런식으로 찍힙니다.
밑에 소스중 for문에 굵은 글씨를 만들어놨습니다.
------------------------
#include <stdio.h>
#include <stdlib.h>
int A();
int B();
int main(int argc, char *argv[])
{
char s1[]="1 -> 3\n";
char s[128999]; //s의 값이 꽤커질것같아서 무작정 크게잡았습니다.
char df[4]="123";
int i,m=0;
sprintf(s,"%c->%c\n%c->%c\n%c->%c",df[0],df[1],df[0],df[2],df[1],df[2]);
printf("층수를 입력하시오 :");
scanf("%d",m);
printf("\n");
if(m=1) printf("%s",s1);
else if(m=2) printf("%s",s);
else for(i=3;i==m;i++)
{
sprintf(s,"%s %s %s",A(s),s1,B(A(s)));
//근데 strncat이나 sprintf로합치면 i=4일때부터는 함수들어가도 2차원배열e로
//인식을 안해서 함수 A,B를 못쓰지 않나..
}
puts(s);
system("PAUSE");
return 0;
}
int A(char df[]) //df의 값을 2는 3으로, 3은 2로 바꿔주는 함수
{
int i;
for(i=0; i<=2; i++)
{
if(df[i]=='2')
df[i]='3';
else if(df[i]=='3')
df[i]='2';
else
df[i]='1';
}
return 0;
}
int B(char df[]) //df의 값중 1->2 로 2->3으로 3->1로 바꿔주는 함수.
{
int i;
for(i=0; i<=2; i++)
{
if(df[i]=='1')
df[i]='2';
else if(df[i]=='2')
df[i]='3';
else
df[i]='1';
}
return 0;
}
보기 귀찮아
소스도 이해가 안가고, 질문도 이해가 안간다. 작업하던 소스를 올리지 말고, 질문하고자 하는 부분에 대한 예제를 구성해서 다시 올려봐라. 그리고 \"함수 들어간다\" , \"2차원 배열로 인식하다\", \"함수 A, B 를 못쓰지 않나\" 라는 등의 표현은 이해하기 힘들다. 좀더 정확한 표현을 쓰려고 노력해봐.