아래 코드는 사원번호 생년월일 이름 받아서 사원번호를 오름차순 한건데

이름을 오름차순으로 좀 바꿔줘 ㅠㅠ


#pragma warning (disable:4996)


// 2차원배열로 사원번호와 생년월일을 입력

// 첫번째는 행, 두번째는 열을 나타냄


#include <stdio.h>

#include <string.h>


int input_code(int(*person)[2]);//생년월일, 사원번호를 입력받기 위한 함수 선언

int sort_number(int(*point)[2]);//생년월일, 사원번호를 정렬하기 위한 함수 선언


char input_name(char domination[20][99]);//이름을 입력받기 위한 함수 선언

char sort_name(int(*point)[2], char(*domination)[99]);//이름을 정렬하기 위한 함수 선언


void output(int person[20][2], char code[20][99]);//출력을 위한 함수 선언


int main()

{

int people[10][2];//사원의 생년월일과 사원번호를 입력받기 위한 이차원 

//배열(각각의 배열위치에 한 사원의 생년월일, 사원번호가 

//입력된다.)

char name[10][99];//이름입력받기 위한 배열(생년월일, 사원번호와 위치가 같아짐)

int number = 0, value = 0;//학번과 성적을 입력받기위한 변수

int(*point)[2] = people;//포인터 배열을 다차원 배열과 같다고 선언

char(*n_point)[99] = name;

*point[2] = people[20][3];


//함수를 호출하는 부분이다.

input_code(people);

input_name(name);

//input까지가 문제에 주어진 함수A를 나타낸다.

sort_name(people, name);

sort_number(people);

//sort가 문제에 주어진 함수B를 나타낸다.

output(people, name);

//output이 문제에 주어진 함수c를 나타낸다.

}

int input_code(int(*person)[2])//생년월일, 사원번호를 입력받고 그것을 리턴해준다.

{

int i;

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

{

printf("%d번째 사원의 생년월일을 입력하시오:", i + 1);

scanf("%d", person[i]);


printf("%d번째 사원의 사원번호를 입력하시오:", i + 1);

scanf("%d", person[i] + 1);

}

return (*person)[2];

}

char input_name(char domination[20][99])

{

int i;

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

{

printf("%d번째 사원의 이름을 입력하시오:", i + 1);

scanf("%s", domination[i]);

}

return domination[20][99];

}

//sort 부분은 오름차순을 위한 함수부분인데 첫번째 number는 일단 사원번호로 오름차순을

//하는 것이기 때문에 사원번호를 갖고 비교를 한다. 사원번호의 배열 위치와 생년월일의 //배열위치가 같으므로 똑같이 작성해주면 오름차순으로 정렬이 된다.

//마찬가지로 sort_name부분은 정렬된 사원번호를 이용하여 배열 된 사원들의 이름을 갖고 //다시같이 정렬을 해준다. 이도 마찬가지로 같은 위치에 배열이 되어있으므로 똑같이 코드를 //작성하면 오름차순으로 나열이 된다.

int sort_number(int(*point)[2])

{

int i, k, j, temp_code, temp_birthday, max, rank = 0;



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

{

max = i;


for (k = i + 1; k<10; k++)

if (point[k][1] < point[max][1])

max = k;

temp_code = point[i][1];//더 큰값을 temp값으로 입력

temp_birthday = point[i][0];

point[i][1] = point[max][1];//작은값에 비교된 값을 입력

point[i][0] = point[max][0];

point[max][1] = temp_code;//더 큰값을 max에 입력

point[max][0] = temp_birthday;

}

return (*point)[2];

}


char sort_name(int(*point)[2], char(*domination)[99])

{

int i, k, j, temp_code, max, rank = 0;

char  temp_name[99];


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

{

max = i;


for (k = i + 1; k<10; k++)

if (point[k][1] < point[max][1])

max = k;

temp_code = point[i][1];//더 큰값을 temp값으로 입력

point[i][1] = point[max][1];//작은값에 비교된 값을 입력

point[max][1] = temp_code;//더 큰값을 max에 입력

strcpy(temp_name, domination[i]);

strcpy(domination[i], domination[max]);

strcpy(domination[max], temp_name);



}

return (*domination)[99];

}

//출력부분 함수

//정렬 된 이름과 사원번호 생년월일을 입력받아서 출력한다.

void output(int person[20][2], char code[20][99])

{

int i, j;

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

{

fflush(stdin);

printf("생년월일 : %d  사원번호 : %d 이름:", person[i][0], person[i][1]);

for (j = 0; code[i][j]; j++)

{

printf("%c", code[i][j]);

}

printf("n");

}

printf("n");

}