목표는 이렁게 만드는 것이다.
코드는 다음과 같다.
#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;
}
C 언어 예제, 유클리드 호제법으로 최대공약수 구하기(포인터 이용) (0) | 2013.12.24 |
---|---|
C 언어 예제. 각 학생들의 성적 입력 받기, 평균에 따른 줄세우기(포인터 이용) (0) | 2013.12.22 |
C 언어 예제, 줄 세우기 & 순위매기기 -2. 동점자 처리 (0) | 2013.09.01 |
C 언어 예제, 줄 세우기 & 순위 매기기 - 1 (3) | 2013.08.30 |
C 언어 예제, 소수 찾기 (2) | 2013.08.30 |
댓글 영역