본문 바로가기
카테고리 없음

[예제] C언어로 프리미어리그 우승 순위 정하기

by heydayz 2024. 8. 14.

C언어로 프리미어리그 우승 순위 정하기 시뮬레이션

C언어로 프리미어리그 우승 순위 정하기 프로그램을 만들기 위해서는 가장 먼저 프리미어리그에 어떤 팀이 있는지 정보를 가져와야합니다. 예를 들면, 팀의 이름, 승점이나 승리, 무승부, 패배 등을 저장해서 사용자에게 보여주는 것이 가장 효과적입니다. 해당 팀의 정보를 저장해서 보여주기 위해선 배열을 사용해야합니다. 그리고 프리미어리그 우승 순위를 정해서 보여주기 위해서는 버블정렬을 활용할 것입니다. 버블정렬이란 쉽게 말해 팀들의 승점 기준으로 내림차순 정렬을 할 예정입니다.
<stdio.h>: 표준 입출력 라이브러리
<string.h>: 문자열 처리 라이브러리

코드 구현 및 설명

#include <stdio.h>  
#include <string.h>

#define MAX\_TEAMS 20 // 최대 팀 수

typedef struct {  
char name\[50\];  
int points;  
int wins;  
int draws;  
int losses;  
} Team;

void swap(Team \*a, Team \*b) {  
Team temp = \*a;  
\*a = \*b;  
\*b = temp;  
}

void bubbleSort(Team teams\[\], int n) {  
for (int i = 0; i < n - 1; i++) {  
for (int j = 0; j < n - i - 1; j++) {  
if (teams\[j\].points < teams\[j + 1\].points) {  
swap(&teams\[j\], &teams\[j + 1\]);  
}  
}  
}  
}

int main() {  
Team teams\[MAX\_TEAMS\];  
int numTeams = 0;

```
// 팀 정보 입력 (예시)
strcpy(teams[numTeams].name, "Manchester United");
teams[numTeams].points = 80;
teams[numTeams].wins = 25;
teams[numTeams].draws = 5;
teams[numTeams].losses = 10;
numTeams++;
// ... 다른 팀들에 대한 정보 입력 ...

// 버블 정렬 수행
bubbleSort(teams, numTeams);

// 순위 출력
printf("프리미어리그 순위\n");
printf("-----------------\n");
printf("순위\t팀 이름\t승점\t승\t무\t패\n");
for (int i = 0; i < numTeams; i++) {
    printf("%d\t%s\t%d\t%d\t%d\t%d\n", i + 1, teams[i].name, teams[i].points, teams[i].wins, teams[i].draws, teams[i].losses);
}

return 0;
```

}

#define MAX_TEAMS 20은 프리미어리그의 최대 팀수입니다. 현재 프리미어리그의 팀의 수는 20팀입니다.
strcpy(teams[numTeams].name, "Manchester United")는 각각의 팀정보를 입력받는 형태이며 해당 예시는 맨체스터유나이티드입니다.
bubbleSort(teams, numTeams)는 버블정렬을 수행하여 내림차순으로 보여줄 것입니다.
printf("프리미어리그 순위\n")는 프리미어리그 순위를 출력해줄 것입니다.

코드 설명

C언어를 활용하여 축구 팀들의 승점을 기준으로 순위를 정렬하는 프로그램을 만들어 보았습니다. 먼저, 각 팀의 정보(팀 이름, 승점, 승리 횟수, 무승부 횟수, 패배 횟수)를 저장하기 위해 'Team'이라는 구조체를 정의하고, 여러 개의 팀 정보를 저장할 수 있도록 'teams' 배열을 선언했습니다. 그리고 두 팀의 정보를 서로 바꾸는 'Swap' 함수와, 버블 정렬 알고리즘을 이용하여 팀들을 승점 기준으로 내림차순 정렬하는 'bubbleSort' 함수를 구현했습니다. 실제 축구 팀들의 정보를 'teams' 배열에 입력하고, 'bubbleSort' 함수를 호출하여 팀들을 정렬한 후, 정렬된 결과를 출력하는 방식으로 프로그램을 실행합니다. 이 프로그램은 간단한 버블 정렬 알고리즘을 사용하여 팀들을 정렬하고, 구조체를 활용하여 팀 정보를 관리하며, 승점뿐만 아니라 승리, 무승부, 패배 횟수도 함께 출력하여 정보를 더 자세히 제공합니다. 이 코드는 축구 팀 순위를 정렬하는 간단한 예시이며, 실제 축구 데이터 분석 시스템에서는 더욱 복잡한 알고리즘과 데이터 구조를 사용하여 다양한 분석을 수행할 수 있습니다. 예를 들어, 퀵 정렬이나 합병 정렬과 같은 더 효율적인 정렬 알고리즘을 사용하거나, 팀 정보를 파일에서 읽어오거나 파일에 저장하는 기능을 추가할 수 있습니다. 또한, 팀 수가 정해지지 않은 경우 동적 할당을 사용하여 메모리를 효율적으로 관리하거나, 그래픽 사용자 인터페이스를 구현하여 사용자 친화적인 프로그램을 만들 수도 있습니다. 하지만 이러한 기능들을 추가하기 위해서는 C언어에 대한 더 깊이 있는 이해와 함께 데이터베이스, GUI 프로그래밍 등에 대한 추가적인 학습이 필요합니다. 이 코드는 교육 목적으로 작성되었으며, 실제 축구 데이터 분석 시스템 구현에 사용하기 전에 전문가와 상담하여 정확한 정보를 확인해야 합니다.