지나가는 C프로그램 초보자 인데요.

지금 배열을 연습하는중인데

아래는 배열을 사용하여 5개의 정수
 의 최대값과, 최대값과 각 수와의 차를 구하시오.
이 문제를 가지고 만든 소스인데 소스가 좀
난잡한것 같아서... 소스 간략화하는데 잘 안되가지고
질문올려요.

#include <stdio.h>

#define INPUT_MAX 5 //이건 걍 입력 증설할 때 하려고 만든것

void main()
{
 int num[INPUT_MAX];
 int repeat,MAX,MIN;

 for(repeat=0; repeat<INPUT_MAX; repeat++) // 순서대로 입력받음
  scanf("%d",&num[repeat]);
 MAX = num[0]; //이건 아무거나 값을 받아도 상관없는데 걍 num[0]로 받음
 MIN = num[0]; //Min은 그냥 추가적으로 한번 넣어 봤어염

 for(repeat=0; repeat<INPUT_MAX; repeat++) // MAX,MIN 값 결정
 {
  if(MAX<num[repeat])
   MAX = num[repeat];
  else if(MIN>num[repeat])
   MIN = num[repeat];
 }

 for(repeat=0; repeat<INPUT_MAX; repeat++) // MAX와 입력받은 수의 차이
  num[repeat] -= MAX;

 printf("%d %d ",MAX,MIN); // 출력 부분
 for(repeat=0; repeat<INPUT_MAX; repeat++)
  printf("%d ",-num[repeat]);
 printf("n");
}

소스 간략화하는데 힌트 좀 부탁드려염

걍 이렇게 했다는...
#include <stdio.h>

#define INPUT_MAX 5

void main()
{
 int num[INPUT_MAX];
 int re,Max,fun=0;

 while( fun<4 ) // 4개의 기능 동작
 {

  for(re=0; re<INPUT_MAX; re++)
  {
   switch(fun)
   {
    case 0 : scanf("%d",&num[re]);
       Max = num[0];
       break;
    case 1 : if(Max<num[re])
        Max = num[re];
       break;
    case 2 : ( num[re]>=0 )? num[re] -= Max : num[re] += Max;
       break;
    case 3 : printf("%d ",(num[re]>=0)? num[re] : -num[re]);
       break;
   }
  }
  fun++;
 }
 printf("%d ",Max);
 printf("\n");
}