본문 바로가기

studio/programmazione

[C/C++] [project_upgrade] 내가 살아온 일수 구하기

말 그대로 project의 upgrade판//

함수는 앞의 것을 그대로 쓴다.

현재 날짜는 일일이 입력할 필요 없이 시스템에서 따와서 쓰고,

나의 생일을 입력하여

날짜를 계산 후에....

빼 주면 끝!

그런데 태어난 날이 3월 3일이고 오늘이 3월 5일이라면, 살아온 일수를 3일로 친다.

그래서 구한 값에 1을 더해주면

완료!



#include<stdio.h>
#include<time.h>
long t_days(int, int, int);

int main()
{
 int byear, bmonth, bday, bdays;
 int pyear, pmonth, pday, pdays;

 time_t timer;
 struct tm *t;
 timer=time(NULL);//현재 시각을 초 단위로 얻기
 t=localtime(&timer);//초 단위의 시간을 분리하여 구조체에 넣기

 pyear=t->tm_year+1900;
 pmonth=t->tm_mon+1;
 pday=t->tm_mday;

 printf("현재 년 : %d\n", pyear);
 printf("현재 월 : %d\n", pmonth);
 printf("현재 일 : %d\n", pday);

 printf("\nInput birth year : ");
 scanf("%d", &byear);
 printf("Input birth month : ");
 scanf("%d", &bmonth);
 printf("Input birth day : ");
 scanf("%d", &bday);

 pdays=t_days(pyear, pmonth, pday);
 bdays=t_days(byear, bmonth, bday);


 printf("\n%d년 %d월 %d일부터 지금까지 살아온 총 날 수는......\n******%d일입니다.\n", byear, bmonth, bday, pdays-bdays+1);
 
 return 0;
}

long t_days(int year, int month, int day)
{
 int i, tdays=0;
 for(i=1;i<year;i++)
 {
  if((i%4==0&&i%100!=0)||(i%400==0))
   tdays+=366;
  else
   tdays+=365;
 }
 
 for(i=1;i<month;i++)
 {
  if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
   tdays+=31;
  else if(i==4||i==6||i==9||i==11)
   tdays+=30;
  else
  {
   if((i%4==0&&i%100!=0)||(i%400==0))
    tdays+=29;
   else
    tdays+=28;
  }
 }
 
 tdays+=day;
 
 return tdays;
}