BÀI MỚI NHẤT
Tuesday, August 9, 2016

Tìm ngày trước ngày vừa nhập?

Đinh Quang Trưởng - Lập trình C/C++

Đề bài:
Nhập 1 ngày gồm: ngày, tháng, năm. Tìm ngày trước ngày vừa nhập?
de bai

Đây là bài tập khó, chúng ta cần xác đinh được 3 trường hợp sau:
  • Năm nhuận
  • Đầu tháng
  • Đầu năm
Dưới đây là đoạn code tham khảo:

#include<iostream>
#include<conio.h>
using namespace std;
const int minYear = 0, maxYear = 10000;
int KiemTraNamNhuan(int nam)
{
return (nam % 4 == 0 && nam % 100 != 0) || (nam % 400 == 0);
}
int TimSoNgayTrongThang(int thang, int nam)
{
int NgayTrongThang;
switch(thang)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
NgayTrongThang = 31;
break;
case 4: case 6: case 9 : case 11:
NgayTrongThang = 30;
break;
case 2:
int Check = KiemTraNamNhuan(nam);
if(Check == 1)
{
NgayTrongThang = 29;
}
else
{
NgayTrongThang = 28;
}
}
return NgayTrongThang;
}

void TimNgayTruocDo(int Ngay, int Thang, int Nam)
{
int NgayTrongThang = TimSoNgayTrongThang(Thang, Nam);
if(Ngay == 1)            // neu là dau thang
{
Ngay = NgayTrongThang;        
if(Thang == 1)            // neu la dau nam
{
Thang = 12;
Nam--;
}
else if(Thang == 3)
{
if(KiemTraNamNhuan(Nam) == 1)
{
Ngay = 29;
Thang = 2;
}
else
{
Ngay = 28;
Thang = 2;
}
else                  // thang khác 1
Thang--;
}
else                // ngay khác 1
Ngay--;
cout<<"\nNgay ke tiep la: "<<Ngay<<" - " <<Thang<<" - "<<Nam<<endl;
}
int main()
{
int Ngay, Thang, Nam;

do
{
cout<<"\nMoi nhap nam: ";
cin>>Nam;
if(Nam < minYear || Nam > maxYear)
{
cout<<"Du lieu khong hop le. Nhap lai!";
}
}while(Nam < minYear || Nam > maxYear);

do
{
cout<<"\nMoi nhap thang: ";
cin>>Thang;
if (Thang < 1 || Thang > 12)
cout<<"Du lieu khong hop le. Nhap lai!";
}while(Thang < 1 || Thang > 12);

int NgayTrongThang = TimSoNgayTrongThang(Thang, Nam);
do
{
cout<<"\nMoi nhap ngay: ";
cin>>Ngay;
if(Ngay < 1 || Ngay > NgayTrongThang)
{
cout<<"Du lieu khong hop le. Nhap lai!";
}
}while(Ngay < 1 || Ngay > NgayTrongThang);

TimNgayTruocDo(Ngay, Thang, Nam);
system("pause");
}
Dưới đây là kết quả của chương trình:


>>Có thể bạn quan tâm;