728x90
반응형

한 기술 회사는 "학술의 별" 대회를 개최했는데, 
참가 인원은 100명을 넘지 않으며, 시합은 3라운드로 나뉜다. (예선, 준결승, 결승)

키보드에서 각 선수의 예선 성적 x(정수)와 준 결승 성적 y(정수)를 입력한다.
처음 두 라운드의 성적인 z > 90 (z = 0.25 * x +0.75 * y, z 는 부동 소수점 유형) 이면 결선 진출 불가,
예선과 준 결승이 모두 만점일 경우, 이 멤버는 결선 진출 없이 1등상을 받는다.

1등에 직접 당첨된 선수가 없을 경우 프로그램은 'Not Found'로 출력된다.
결승에 진출한 참가자의 예선 성적, 준 결승 성적, 예선, 준결승 대회 종합 성적을 출력해야 하며,
출력 결과는 종합성적의 내림차순으로 배열되어야 한다.

(입력 데이터는 입력이 요구사항을 충족한다고 가정하여 적법성 검사가 필요하지 않다.
아래 함수의 원형에 따라 프로그램 작성 실시.)

int Input(int x[], int y[], float z[]); // 키패드에서 각 참가자의 예선과 준결승 성적을 입력
배열 x[] y[]를 각각 저장한다. 입력된 예선 성적이 0보다 작을 때 종료.
그리고 처음 두 라운드의 종합성적을 계산하여 배열 z[]에 저장하고 함수는 실제 참가자 수를 반환한다.

void Sort(int x[], int y[], float z[], int n); //
n명의 참가자가 보관된 종합성적 z를 내림차순으로 정렬한다. 또 n개 참가자의 예선, 준결승, 종합 성적을
종합 성적 순서에 맞춰야 한다.

void Output(int x[], int y[], float z[], int n); //
종합 성적 z의 내림차순으로 본선에 진출한 모든 참가자의 예선 성적, 준결승 성적, 대회 종합 성적을 출력한다.
결승에 간 참가자가 없을 경우 'Not Found''를 출력한다.

입력 형식 : "%d %d" // 예선성적, 준결승 성적

출력형식 1: " %5d %5d %8.2f\n" // 예선 성적, 준결승 성적, 처음 두 라운드의 종합 성적
출력형식 2: "Not Found"


<<<실행 예시>>>

91 100
100 100
95 92
60 70
87 88
73 85
84 95
-1 100

출력 결과:
100 100 100.00
91 100 97.75
95 92 92.75
84 95 92.75
...

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <memory.h>

#define MAX 100
#define MIN 90

int Input(int x[], int y[], float z[]);
void Sort(int x[], int y[], float z[], int n);
void Output(int x[], int y[], float z[], int n);

int main(void)
{
	int cnt = 0;
	int x[100];
	int y[100];
	float z[100];
	memset(x, 0, sizeof(int) * 100);
	memset(y, 0, sizeof(int) * 100);
	memset(z, 0, sizeof(int) * 100);

	while (1)
	{
		printf("성적 입력 (예선, 준결승) :");
		scanf_s("%d %d", &x[cnt], &y[cnt]);
		z[cnt] = (0.25 * x[cnt]) + (0.75 * y[cnt]);

		if (x[cnt] < 0)
		{
			break;
		}

		cnt += 1;
	}

	int count = Input(x, y, z);

	Sort(x, y, z, cnt);

	Output(x, y, z, cnt);

	return 0;
}

int Input(int x[], int y[], float z[])
{
	int cnt = 0;

	while (x[cnt] != 0)
	{
		if (x[cnt] < 0)
		{
			break;
		}
		if (x[cnt] == MAX && y[cnt] == MAX)
		{
			printf("Prize\n");
		}
		if (z[cnt] < MIN)
		{
			printf("Failed\n");
		}
		cnt += 1;
	}

	return cnt;
}

void Sort(int x[], int y[], float z[], int n)
{
	int i;
	int j;
	int temp;

	for (i = 0; i < n - 1; i++)
	{
		for (j = 0; j < (n - i) - 1; j++)
		{
			if (x[j] < x[j + 1])
			{
				temp = x[j];
				x[j] = x[j + 1];
				x[j + 1] = temp;
			}
		}
	}

	for (i = 0; i < n - 1; i++)
	{
		for (j = 0; j < (n - i) - 1; j++)
		{
			if (y[j] < y[j + 1])
			{
				temp = y[j];
				y[j] = y[j + 1];
				y[j + 1] = temp;
			}
		}
	}

	for (i = 0; i < n - 1; i++)
	{
		for (j = 0; j < (n - i) - 1; j++)
		{
			if (z[j] < z[j + 1])
			{
				temp = z[j];
				z[j] = z[j + 1];
				z[j + 1] = temp;
			}
		}
	}
}

void Output(int x[], int y[], float z[], int n)
{
	for (int i = 0; i < n; i++)
	{
		printf("%d %d %.2lf\n", x[i], y[i], z[i]);
	}
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <memory.h>

#define MAX 100
#define MIN 90

int X[MAX];
int Y[MAX];
float Z[MAX];
int cnt = 0;

int Input(int x[], int y[], float z[]);
void Sort(int x[], int y[], float z[], int n);
void Output(int x[], int y[], float z[], int n);

int main(void)
{
	memset(Z, 0, sizeof(int) * MAX);

	int first;
	int second;
	float third;

	while (1)
	{
		printf("%d 번째 성적 입력 (예선, 준결승) :", cnt + 1);
		scanf_s("%d %d", &first, &second);
		third = (0.25 * first) + (0.75 * second);

		if (first < 0)
		{
			break;
		}

		if (third < MIN)
		{
			continue;
		}
	
		cnt = Input(first, second, &third);
	}

	Sort(X, Y, Z, cnt);

	Output(X, Y, Z, cnt);

	return 0;
}

int Input(int x[], int y[], float z[])
{
	X[cnt] = x;
	Y[cnt] = y;
	Z[cnt] = *z;

	cnt += 1;

	return cnt;
}

void Sort(int x[], int y[], float z[], int n)
{
	int i;
	int j;
	int temp[3] = { x, y, z };

	for (i = 0; i < n - 1; i++)
	{
		for (j = 0; j < (n - i) - 1; j++)
		{
			if (z[j] < z[j + 1])
			{
				temp[0] = x[j];
				temp[1] = y[j];
				temp[2] = z[j];
				
				x[j] = x[j + 1];
				y[j] = y[j + 1];
				z[j] = z[j + 1];


				x[j + 1] = temp[0];
				y[j + 1] = temp[1];
				z[j + 1] = temp[2];
			}
		}
	}
}

void Output(int x[], int y[], float z[], int n)
{
	puts("");

	if (Z[0] == 0)
	{
		printf("Not Found.");
	}

	else
	{
		for (int i = 0; i < n; i++)
		{
			printf("%d %d %.2lf\n", x[i], y[i], z[i]);
		}
	}	
}
728x90
반응형

'Data Structure & Algorithm' 카테고리의 다른 글

Coin  (0) 2022.11.21
About Call-Back Function  (0) 2022.11.18
Flower, Chicken, Cards  (0) 2022.11.14
[Sort]Bubble, Selection, Insertion  (0) 2022.10.31
Basic Heap.(Priority Queue and Heap)  (0) 2022.10.31

+ Recent posts