상세 컨텐츠

본문 제목

C 언어 예제, 배열을 내림차순으로 나열하기(함수, 포인터 이용)

컴퓨터 관련/C 언어 예제

by 열정과 함께 2013. 9. 23. 16:50

본문

목표는 이렁게 만드는 것이다.



코드는 다음과 같다.


#include <stdio.h>

/*10개의 원소를 갖는 배열. 순서대로 값을 출력하는 것을 만드시오*/

int re_arr(int *parr);

int main()

{

int i,j;

int arr[10];

printf("배열의 원소들을 입력해 주세요. 단, 배열 내에 같은 원소가 있으면 안 됩니다. \n");

for(i=0;i<10;i++)

{

scanf("%d", &arr[i]);

}

printf("배열의 원소들을 큰 순서대로 나열하였습니다 \n");

re_arr(arr);

for(j=0;j<10;j++)

{

printf("%d \n", arr[j]);

}

return 0;

}

int re_arr(int *parr)

{

int i,j,k=0;

int re_arr[10];

int m;

for(i=0;i<10;i++)

{

for(j=0;j<10;j++)

{

if(parr[i]>parr[j])

{

k = k+1;

}

}

re_arr[9-k] = parr[i];

k=0;

}

for(m=0;m<10;m++)

{

*parr = re_arr[m];

parr = parr +1;

}

return 0;

}


간략히 설명하자면........


#include <stdio.h>

/*10개의 원소를 갖는 배열. 순서대로 값을 출력하는 것을 만드시오*/

int re_arr(int *parr);

포인터와 함수를 이용해서 하는거니까. 인자는 포인터로 받는다.

int main()

{

int i,j;

int arr[10];

printf("배열의 원소들을 입력해 주세요. 단, 배열 내에 같은 원소가 있으면 안 됩니다. \n");

for(i=0;i<10;i++)

{

scanf("%d", &arr[i]);

}

printf("배열의 원소들을 큰 순서대로 나열하였습니다 \n");

re_arr(arr);

re_arr 함수의 호출. arr 만 쓰면 그 자체로 배열이 시작되는 주소값이 되므로 이렇게 입력해도 된다.

for(j=0;j<10;j++)

{

printf("%d \n", arr[j]);

}

return 0;

}

int re_arr(int *parr)

{

int i,j,k=0;

int re_arr[10];

int m;

for(i=0;i<10;i++)

{

for(j=0;j<10;j++)

{

if(parr[i]>parr[j])

{

k = k+1;

}

}

re_arr[9-k] = parr[i];

k=0;

}

수학적으로, 그러하다.

for(m=0;m<10;m++)

{

*parr = re_arr[m];

parr = parr +1;

}

메모리값 위치에 대입해주면 된다. +1 을 해줘서 다음 위치에 대입할 수 있도록 한다. parr++; 로 처리해도 무방하다.

return 0;

}


관련글 더보기

댓글 영역