Tính ngày tiếp theo

sao em input các ngày cuối tháng thì có 1 số tháng ra đúng nhưng 1 số tháng thì là ra là ngày 2 của tháng tiếp theo. Mọi người xem giúp em ạ

int main(){
	int month, year, leap, day;
	cout << "Input day,month and year: ";
	cin >> day >> month >> year;
	// kiem tra nam nhuan
	if (year % 100 == 0)
	{
		if (year % 400 == 0) {
			leap = 1;
		}
		else {
			leap = 0;
		}
	}
	else if (year % 4 == 0) {
		leap = 1;
	}
	else {
		leap = 0;
	}
	// thang 2
	if (month == 2) {
		if (leap == 1) 
		{
			if (day == 29) {
				day = 1;
				month += 1;
			}
			else {
				day += 1;
			}
		}
		if (leap == 0) {
			if (day == 28) {
				day = 1;
				month += 1;
			}
			else {
				day += 1;
			}
		}
	}
	// thang co 31 ngay
	if ((month == 1) || (month == 3) || (month == 5) || (month == 7) || (month ==8)|| (month == 10)) {
		if (day == 31) {
			day = 1;
			month += 1;
		}
		else {
			day += 1;
		}
	}
	// thang co 30 ngay
	if ((month == 4) || (month == 6) || (month == 9) || (month == 11)) {
		if (day == 30) {
			day = 1;
			month += 1;
		}
		else {
			day += 1;
		}
	}
	//thang 12
	if (month == 12) {
		if (day == 31) {
			day = 1;
			month = 1;
			year += 1;
		}
		else {
			day += 1;
		}
	}
	cout << "Tomorrow is: " << day << " " << month << " " << year;
	return 0;
}

(post withdrawn by author, will be automatically deleted in 24 hours unless flagged)

Nói cụ thể sai những tháng nào sẽ giúp mọi người dễ tìm lỗi sai hơn !

1 Like

Nếu nhập ngày cuối tháng vd 31/3/2019 thì nó sẽ nhảy lên 2/4/2019 đúng không?
Thêm else if ở chỗ check tháng là ok nhé.

2 Likes

Nếu nhập ngày tháng sai thì sao nhỉ?
Ví dụ nhập ngày 29/2/2019
output mong muốn là gì?

2 Likes
if (month == 2) {
		if (leap == 1) 
		{
			if (day == 29) {
				day = 1;
				month += 1;
			}
			else {
				day += 1;
			}
		}
		if (leap == 0) {
			if (day == 28) {
				day = 1;
				month += 1;
			}
			else {
				day += 1;
			}
		}
	}
	// thang co 31 ngay
	if ((month == 1) || (month == 3) || (month == 5) || (month == 7) || (month ==8)|| (month == 10)) {

Chỗ trên thay if(month == 1) thành else if nhé em.
Nếu hàm if(month == 2) vs if(month == 1) độc lập nên nhập 29/2 month chuyển qua 3 rồi nó lại tiếp tục xét tiếp 1/3 thành 2/3 nha

1 Like

em sửa được rồi em cảm ơn mọi người ạ

1 Like

good job!
Nhưng bạn có để ý thấy rằng mỗi nhập ngày tháng năm, chương trình của bạn đều phải kiểm tra có phải năm nhuận hay k đúng k?
Cái đó là không cần thiết, ví dụ tôi nhập ngày 29/10/2019.
và bạn có để ý đoạn code này bị lặp lại không nhỉ?

Bạn thử suy nghĩ có cách nào bỏ bớt được k nhỉ?

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?