#include<stdio.h>
/*첫번째 줄에 n(학생수)을 입력하고 (1<=n<=100) 두번째 줄에 학생 수 마다 점수를 입력하시오. 그리고 3번 째 점수 한 점수를 출력하시오 */
#define TRUE 1
#define FALSE 0
void score_store_func (uint8_t n, uint32_t* number_buf);
void mid_order_func(uint8_t n, uint32_t* number_buf);
void switch_buf_func (uint8_t i, uint8_t big_addr, uint32_t* number_buf);
void print_buf (uint8_t n, uint32_t* number_buf);
int main()
{
uint8_t n = 0;
uint32_t number_buf[100] = {0};
printf("1 ~ 100 이내에 수를 입력 하시오 :");
scanf("%d", &n);
printf("N = %d\n", n);
score_store_func(n, number_buf);
mid_order_func(n, number_buf);
return 0;
}
void score_store_func (uint8_t n, uint32_t* number_buf)
{
for (uint8_t i = 0; i < n ; i++)
{
scanf("%d", &number_buf[i]);
printf("number_buf[%d] = %d\n", i, number_buf[i]);
}
}
void mid_order_func (uint8_t n, uint32_t* number_buf)
{
uint32_t big_value = 0;
uint8_t big_addr = 0;
uint8_t switch_flag = FALSE;
for (uint8_t i = 0; i < n; i++)
{
big_value = *(number_buf + i);
uint8_t j = (i + 1);
for(; j < n; j++)
{
if (big_value < number_buf[j])
{
big_value = number_buf[j];
big_addr = j;
switch_flag = TRUE;
}
}
if (TRUE == switch_flag)
{
switch_buf_func (i, big_addr, number_buf);
switch_flag = FALSE;
}
}
print_buf(n, number_buf);
}
void switch_buf_func (uint8_t i, uint8_t big_addr, uint32_t* number_buf)
{
uint32_t temp_buf = 0;
temp_buf = number_buf[i];
number_buf[i] = number_buf[big_addr];
number_buf[big_addr] = temp_buf;
}
void print_buf (uint8_t n, uint32_t* number_buf)
{
uint8_t first_score = number_buf[0];
uint8_t second_score = 0;
uint8_t second_addr = 0;
uint8_t third_addr = 0;
for (uint8_t i = 1; i < n; i++)
{
if (first_score != number_buf[i])
{
second_addr = i;
second_score = number_buf[second_addr];
break;
}
}
for (uint8_t i = second_addr; i < n; i++)
{
if (second_score != number_buf[i])
{
third_addr = i;
break;
}
}
printf("%d ", number_buf[third_addr]);
}