C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[25143] [답변] 상세 설명( 초보님들 용).
정성훈.해미 [sage5nor] 530 읽음    2003-04-10 13:59
수열(?)을 만든다.

잘 보면 공통점을 찾을 수 있습니다.

편의 상 시작값을 a, 종료값을 b로 하겠습니다.

(경우)

a=1, b=5일 경우

1 2 3 4 5
5 1 2 3 4
4 5 1 2 3
3 4 5 1 2
2 3 4 5 1

이렇게 5x5 로 출력합니다.

즉 출력할 열과 행의 개수는 각각 (b-a+1)개 입니다.

반복문을 2번 사용해서 만들면 되겠네요.

예)--------------------------

for(i=0; i<5; i++)
{
    for(j=0; j< 5; j++)
    {
        printf("%d ", j);
    }
    printf("\n");
}

결과)

0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4

---------------------------

일정한 규칙을 만들어 봅시다.

a 와 b가 어떤 값이든 처음 시작을 모두 0부터 시작하게 변환해주면 쉬워집니다.

즉, a를 0로 만든다는 것이지요.

예)-----------------------

a=0, b=4일때

0 1 2 3 4
4 0 1 2 3
3 4 0 1 2
2 3 4 0 1
1 2 3 4 0


a =1, b=5일때는

0 1 2 3 4
4 0 1 2 3
3 4 0 1 2        에 모두 +1
2 3 4 0 1
1 2 3 4 0


a=3, b=7일때는

0 1 2 3 4
4 0 1 2 3
3 4 0 1 2        에 모두 +3
2 3 4 0 1
1 2 3 4 0

자세히 보시면 모두 a=0일때 값에 a값을 더해주면 나옵니다.

---------------------------------------------------------
그럼 식은 (a=0일 경우로 만든 값) + a 가 되겠군요..................(식1)
---------------------------------------------------------

자 그럼...

이제부터 0부터 시작하게 만들겠습니다.

0 1 2 3 4    ..........(1)
4 0 1 2 3    ..........(2)
3 4 0 1 2    ..........(3)
2 3 4 0 1    ..........(4)
1 2 3 4 0    ..........(5)

모든 수를 5로 나머지 셈을 하면 0~4까지 나옵니다.

나머지셈은 그 숫자를 넘을 수 없지요.

5의 나머지셈으로

0은   0,5,10,15....
1은   1,6,11,16...
2는   2,7,12,17...

이렇게 됩니다.

(1)를 다시 표현하면...

5 6 7 8 9 을 모두 %5하면 되겠네요.

(2)는 4 5 6 7 8을 %5

(3)은 3 4 5 6 7을 %5

(4)는 2 3 4 5 6을 %5

(5)는 1 2 3 4 5를 %5

전체로 묶어 보지요.

5 6 7 8 9
4 5 6 7 8
3 4 5 6 7   에 %5를 하면 나옵니다.
2 3 4 5 6
1 2 3 4 5

자 또 다시 볼까요.

5는 b-a+1입니다.

----------------------------------------------------------
그러면 식은 (어떤 값)%(b-a+1)+a 로 만들어집니다.................(식2)
----------------------------------------------------------

5 6 7 8 9 는  0 1 2 3 4 에 모두 5를 더한것

4 5 6 7 8 은  0 1 2 3 4 에 모두 4를 더한것

3 4 5 6 7 은  0 1 2 3 4 에 모두 3을 더한것

2 3 4 5 6 은  0 1 2 3 4 에 모두 2를 더한것

1 2 3 4 5 는  0 1 2 3 4 에 모두 1을 더한것입니다.

일정한 규칙을 찾을 수 있습니다.

0 1 2 3 4 에 5부터 1까지 차려로 더하면 나옵니다.

(0 1 2 3 4 값) + 증가값 이렇게 하면 되겠군요.

증가값을 i , (0 1 2 3 4 값)을 j 라고 하면

j + i

다시 식을 만들면

-------------------------------------------------------
( j + i ) % (b-a+1) + a .........................(식3)
-------------------------------------------------------

이제 거의 다 만들었습니다.

i 와 j 만 만들면 되겠군요.

먼저 i 는

시작값 5 , 종료값 1 입니다...

다시 말하면....

시작값 b-a+1, 종료값 1이 되지요.

for(i=b-a+1; i>=1; i--)

이런 반복문이 들어가겠네요.

다음으로 j 를 만들어 보지요.

시작값 0, 종료값 4....

a,b를 이용해서 다시 만들면..

시작값 0, 종료값 b-a 가 됩니다.

반복문은

for(j=0; j<=b-a, j++)

자 이제 (식3)하고 합치겠습니다.

for(i=b-a+1; i>=1; i--)
{
    for(j=0; j<=b-a, j++)
    {
        printf("%d ", ( j + i ) % (b-a+1) + a );
    }
    printf("\n");
}

드뎌 완성 되었습니다.

C는 간단하지요...^^*

반복문과 연산자 몇개로 끝났네요.

초보님들 잘 보세요...

C가 어려운게 아니고...

공식을 만드는게 어려운 것입니다.

어떻게 하면 나올까....생각해 보세요.

수학( 특히 수열부분)을 좀 공부하면 쉽게 풀리는 문제입니다...

젤 중요한 건....

프로그램 언어가 아닙니다...

다른 것이지요....................................


열씨미 하세요.........

+ -

관련 글 리스트
25128 이렇게 할려면 어떻게 해야 하나요 ? 컴초보 668 2003/04/09
25143     [답변] 상세 설명( 초보님들 용). 정성훈.해미 530 2003/04/10
25130     Re:이대로 숙제 내면 혼나는 코드 ^^; 김백일.cedar 769 2003/04/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.