Thứ Năm, 7 tháng 1, 2016

tÍNH HỢP LỆ CỦA NGÀY THÁNG

  • #include
  • //đã tối ưu lại code
  • short day_of_month[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; //só ngày trong tháng
  •  
  • short isleapyear(int y) { //kiểm tra năm nhuận
  • if(!(y%400) || (!(y%4) && y%100)) return 1;
  • else return 0;
  • }
  •  
  • int checkday(int d, int m, int y) { //kiểm tra tính hợp lệ
  • if(m>12) return 0;
  • else {
  • if(isleapyear(y)) day_of_month[2] +=1;
  • if(d>day_of_month[m]) return 0;
  • }
  • return 1;
  • }
  •  
  • void pday(int d, int m,int y) { //in ngày hsau và hqua
  • int mt=m,dt=d,yt=y; //biến tạm
  • if(checkday(d,m,y)) {
  • printf("Ngày tháng hợp lệ!\n");
  • printf("Ngày hnay: %d / %d / %d\n",d,m,y);
  • //ngày hsau:
  • if(d==day_of_month[m]) {
  • d=1;
  • if(m==12) {
  • m=1;
  • y+=1;
  • } else m+=1;
  • } else d+=1;
  • printf("Ngày hsau: %d / %d / %d\n",d,m,y);
  • m=mt; d= dt; y=yt;
  • //ngày htrc
  • if(d==1) {
  • if(m==1) {
  • m=12;
  • d=31;
  • --y;
  • } else {
  • --m;
  • d = day_of_month[m];
  • }
  • } else d-=1;
  • printf("Ngày hqua: %d / %d / %d",d,m,y);
  • } else printf("Ngày tháng không hợp lệ!");
  • }
  • int main(void) {
  • int d,m,y;
  • scanf("%d %d %d",&d,&m,&y);
  • if(d<1 || m<1|| y<0) printf("Mất căn bản về ngày tháng năm :v");
  • else pday(d,m,y);
  • return 0;
  • 0 nhận xét: