아래 코드는 사원번호 생년월일 이름 받아서 사원번호를 오름차순 한건데
이름을 오름차순으로 좀 바꿔줘 ㅠㅠ
#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");
}
sort에서 부등호 바꾸면 되것네
형 좀더 자세히 가르쳐 주면 안되?