Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

닌자고양이

[C/C++] 중간값 구하기 mid(a, b, c) 본문

C C++

[C/C++] 중간값 구하기 mid(a, b, c)

닌자고양이 2020. 9. 9. 13:25
// 최소 비교로 중간값 구하기
int mid(int a, int b, int c)
{
    if (a < b)
        return b < c ? b : (c < a ? a : c);
    else
        return a < c ? a : (c < b ? b : c);
}

/* 몹쓸(?) 방법들

난독성 define
#define mid(a,b,c)(a<b?b<c?b:c<a?a:c:a<c?a:c<b?b:c)


정렬하여 중간값 구하기
int mid(int a, int b, int c)
{
    if (a > b) a += b, b = a - b, a -= b; // swap(a, b)
    if (b > c) b += c, c = b - c, b -= c; // swap(b, c)
    return a > b ? a : b;
}

총합 - 최소값 - 최대값
int mid(int a, int b, int c)
{
    #define left(x, op, y) (x op y ? x : y)
    int n = left(left(a, < , b), < , c); // min
    int m = left(left(a, > , b), > , c); // max
    return a + b + c - n - m;
}

*/

 

Comments