티스토리 뷰
#include <stdio.h>
#include <stdlib.h>
struct student
{
int id;
int score;
};
int int_cmp(const void *a, const void *b);
int id_cmp(const void *a, const void *b);
int score_cmp(const void *a, const void *b);
void main()
{
struct student x[10] = { {1,77},{5,44}, {3,99}, {9,66}, {8,55}, {11,44}, {22,88}, {15,22}, {45,33}, {27,11} };
int a[10] = {3,2,1,6,7,4,5,11,49,33};
qsort(a, 10, sizeof(int), int_cmp); // 배열이름, 배열 크기, 배열의 자료형, 비교 대상 함수를 qsort에 전달
printf(" ======== 정수 ========\n");
for(int i=0; i<10; i++)
{
printf("%d ",a[i]);
}
printf("\n");
qsort(x, 10, sizeof(struct student), id_cmp);
printf(" ======== 학번 ========\n");
for(int j = 0; j<10; j++)
{
printf("ID : %d, Score : %d\n", x[j].id, x[j].score);
}
qsort(x, 10, sizeof(struct student), score_cmp);
printf(" ======== 점수 ========\n");
for(int k=0; k<10; k++)
{
printf("ID : %d, Score : %d\n", x[k].id, x[k].score);
}
}
int int_cmp(const void *a, const void *b) // 넘어온 포인터는 void
{
const int *m, *n;
m= (const int *) a;
n= (const int *) b;
if(*m < *n) // *(const int*) : 강제 int 포인터로 형변환
{
return (-1);
}
else if(*m == *n)
{
return (0);
}
else
{
return (1);
}
}
int id_cmp(const void *a, const void *b)
{
const struct student *m, *n;
m = (const struct student *) a;
n = (const struct student *) b;
if(m->id < n->id)
{
return (-1);
}
else if(m->id == n->id)
{
return (0);
}
else
{
return (1);
}
}
int score_cmp(const void *a, const void *b)
{
const struct student *m, *n;
m = (const struct student *) a;
n = (const struct student *) b;
if(m->score < n->score)
{
return (-1);
}
else if(m->score == n->score)
{
return (0);
}
else
{
return (1);
}
}
'Programming? > C++' 카테고리의 다른 글
[C] 구조체 최대값 (0) | 2012.06.10 |
---|---|
[C] 정수형 퀵정렬 (0) | 2012.06.10 |
[C] 큐 (0) | 2012.06.10 |
[C] 스택 (0) | 2012.06.10 |
[C] 초간단 계산기 (0) | 2012.06.10 |
- Total
- Today
- Yesterday
- jsp
- oracle
- GOD EATER2
- C Programming
- java
- PS VITA
- Unleashed
- DnF_카인
- jdbc
- HTML
- 이건사야되!
- 포세리앙 시밤...
- XML
- League of legends
- spring
- PSP
- Android
- Talesweaver_Palshu
- 무사헌터G
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |