Programming/C

c언어 이름,학번,총점 순서정렬하기

fishersheep 2021. 8. 13. 01:20
반응형
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

#define MAX_NA 10
#define MAX_N 20

typedef struct
{
	char name[MAX_NA];
	int num[MAX_N];
	int sum;

}Person;

void sort_name(Person* arr);
void sort_num(Person* arr);
void sort_total(Person* arr);

int main()
{
	Person arr[5] = { 0, };
	int ch=0;

	for (int i = 0; i < 5; i++)
	{
		printf("학생 %d 정보\n", i+1);
		printf("이름: ");
		scanf("%s", &arr[i].name);
		printf("학번: ");
		scanf("%s", &arr[i].num);
		printf("총점: ");
		scanf("%d", &arr[i].sum);
		printf("\n");
	}

	while (1)
	{
		printf("1.이름 순(ABC순) 2.학번순(오름차순) 3.총점(내림차순)\n원하는 정렬을 선택하시오.:");
		scanf("%d", &ch);
		printf("\n");

		if (ch == 1)
			sort_name(arr);
		else if (ch == 2)
			sort_num(arr);
		else if (ch == 3)
			sort_total(arr);
		else if (ch == 0)
			break;
	}

	return 0;
}

void sort_name(Person *arr)
{	
	Person temp;

	for (int i = 0; i < 5; i++)
	{	
		for (int j = 0; j < i; j++)
		{
			if (strcmp(arr[i].name, arr[j].name) == -1)
			{
				temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;
			}
		}
	}

	printf("-------------------------------\n");
	printf("이름      학번     총점\n");
	printf("-------------------------------\n");

	for (int i = 0; i < 5; i++)
	{
		printf("%s        %s        %d\n", arr[i].name, arr[i].num, arr[i].sum);
	}
	printf("\n");
}

void sort_num(Person* arr)
{
	Person temp;

	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < i; j++)
		{
			if (strcmp(arr[i].num, arr[j].num) == -1)
			{
				temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;
			}
		}
	}

	printf("-------------------------------\n");
	printf("이름      학번     총점\n");
	printf("-------------------------------\n");

	for (int i = 0; i < 5; i++)
	{
		printf("%s        %s        %d\n", arr[i].name, arr[i].num, arr[i].sum);
	}
	printf("\n");
}

void sort_total(Person* arr)
{
	Person temp;

	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < i; j++)
		{
			if (arr[i].sum> arr[j].sum)
			{
				temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;
			}
		}
	}

	printf("-------------------------------\n");
	printf("이름      학번     총점\n");
	printf("-------------------------------\n");

	for (int i = 0; i < 5; i++)
	{
		printf("%s        %s        %d\n", arr[i].name, arr[i].num, arr[i].sum);
	}
	printf("\n");
}
반응형

'Programming > C' 카테고리의 다른 글

c언어 주민번호 예제  (0) 2021.08.13
c언어 숫자맞추기 예제  (0) 2021.08.13
c언어 텍스트 파일 활용예제  (0) 2021.08.13
c언어 배열요소의 합 예제  (0) 2021.08.13
백준 1924,8393,10818,2741,2742,2739 (c언어)  (0) 2021.08.13