본문 바로가기
Computer & Program/잡다한 이모저모

날짜 계산 프로그램

by TDRemon 2009. 5. 11.
반응형

// 날짜 계산하는 프로그램
#include<stdio.h>

void main()
{
 int data[2][3];
 long sum[2], result;
 int i;
 char name[20];

 printf("입력 ]\n = Today =\n");
 printf("년 ? ");
 scanf("%d", &data[0][0]); // 오늘의 년
 printf("월 ? ");
 scanf("%d", &data[0][1]); // 오늘의 월
 printf("일 ? ");
 scanf("%d", &data[0][2]); // 오늘의 일

 printf("\n = Brithday =\n");
 printf("이름 ? ");
 scanf("%s", name); // 이름
 printf("년 ? ");
 scanf("%d", &data[1][0]); // 태어난 년
 printf("월 ? ");
 scanf("%d", &data[1][1]); // 태어난 월
 printf("일 ? ");
 scanf("%d", &data[1][2]); // 태어난 일

 for(i=0; i<2; i++){
  if((data[i][0]%4 == 0) && (data[i][1] > 2)){
   sum[i] = ((data[i][0]-1)*365+((data[i][0]-1)/4))+
     ((data[i][1]-1)/2-1)*30+29+((data[i][1]-1)-((data[i][1]-1)/2))*31+data[i][2];
  }
  else{
   sum[i] = ((data[i][0]-1)*365+((data[i][0]-1)/4))+
     ((data[i][1]-1)/2-1)*30+28+((data[i][1]-1)-((data[i][1]-1)/2))*31+data[i][2];
  }
 }

 result = sum[0]-sum[1]+1;
 printf(" = Result = \n");
 printf("%s님 오늘까지 총 살아온 일수가 %d일입니다.", name, result);
}
이 프로그램은 나에게 반복적인 연산이 수행되면 반드시 for문이나 while문을 써야한다는 인식을 고쳐준 프로그램이다. 정확히 말하면 이 프로그램이 아니라 이와 비슷한 다른 프로그램이었지만... 이 프로그램에서 중요한 부분이라고 하다면... x/y를 하게되면 몫만 정수로써 출력된다는 것을 각인 시켰줬다는 점이다. 그리고 날짜의 특성, 윤달이나 월별로 30일 31일로 끝난다는 점을 이용한 계산식이다. 반복문의 사용을 줄임으로써 보다 빠른 프로그램이 구현 가능했다. 뭐 이정도에서는 거의 차이가 안나겠지만...

반응형

댓글