Code nên căn tab và bỏ trong thẻ [code cho dễ nhìn.
Lấy khoảng thời gian từ đầu năm đến tháng thứ nhất trừ khoảng thời gian từ đầu năm đến tháng thứ 2 là ra khoảng cách giữa 2 tháng. Điều kiện là tháng lớn hơn mới trừ được tháng nhỏ hơn.
xét đoạn sau:
Mã:
m1>m2 ? (max=m1,min=m2):(max=m2,min=m1);
Tham khảo code của mình:
Mã:
#include <iostream>
using namespace std;
typedef struct
{
int day;
int month;
int year;
} date_time;
date_time today;
///kiem tra nam nhuan
bool check_year(int year)
{
if((year%400==0)||(year%4==0 && year%100!=0))
return true;
else
return false;
}
///tra ve so ngay cua 1 nam
int day_of_year(int year)
{
if(check_year(year)==true)
return 366;
else
return 365;
}
///tra ve so ngay cua 1 thang
int day_of_month(int month,int year)
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
break;
case 4:
case 6:
case 9:
case 11:
return 30;
break;
case 2:
{
if(check_year(year)==true)
return 29;
else
return 28;
}
break;
default:
return 0;
break;
}
}
///tinh so ngay da qua tu dau nam nay. Khong tinh nam
int time_until_now(int day,int month,int year)
{
if(day>31 || day < 1 || month > 12 || month < 1)
return 0;
int sum_month=0;
for(int i=0; i<month; i++)
sum_month+=day_of_month(i,year);
return sum_month+day;
///tra ve so ngay + so ngay cua tung thang
}
///tinh khoang cach giua 2 thang
int time_between_month()
{
int max,min,m1,m2;
cout<<"Enter two months : "<<endl;
cin>>m1>>m2;
m1>m2 ? (max=m1,min=m2):(max=m2,min=m1);
cout<<"Day between two month: "<<time_until_now(0,max,1)-time_until_now(0,min,1)<<endl;
}
main()
{
int d,m,y;
cout<<"Enter Day Month Year: "<<endl;
cin>>today.day>>today.month>>today.year;
///so ngay da qua tu 1/1/1 tinh dem ngay thang nam vua nhap
cout<<"Time until now: "<<time_until_now(today.day,today.month,today.year)<<endl;
///
///tinh so ngay cua tung nam tu nam 1 den nam ngay nhap vao
int sum_year=0;
for(int i=0; i<today.year; i++)
sum_year+=day_of_year(i);
///
///so ngay trong nam nay + so ngay tu ngay 1 den dau nam nay
cout<<"Time from 1/1/1: "<<sum_year+time_until_now(today.day,today.month,today.year)<<endl;
///
///nhap 2 thang bat ky, tra ve so ngay giua 2 thang
time_between_month();
///
}