01/10/2018, 15:52
Tính ngày tiếp theo trong C++
Trong bài tập tính ngày tiếp theo từ ngày nhập từ bàn phím thì em lập trình như bên dưới, tuy đúng hầu hết các trường hợp nhưng còn trường hợp 28/2 của năm không nhuận thì máy lại báo là 29/2 ạ. Các anh xem trong hàm của em sai sót những gì thì chỉ giúp em với ạ, em xin cảm ơn
int ngayTiepTheo(int& ngay,int& month, int& year )
{
int dem, day;
day = ngayTrongThang (month);
if (day == -1 || ngay <1 || ngay > day) dem =-1;
else
{
if (ngay < day) ngay++;
else if (month!=12)
{
ngay = 1;
month++;
}
else
{
ngay = month = 1;
year++;
}
}
return dem;
}
https://sv1.uphinhnhanh.com/images/2018/05/17/5018ce.png
Bài liên quan
Tháng 2 là tháng đặc biệt nên mình nghĩ bạn nên viết câu điều kiện if then else để kiểm tra xem năm đó có nhuận hay không để xác định được ngày tiếp theo.
Em nó có kiểm tra năm nhuận rồi. Còn code có bỏ bùa hay không thì không biết. Up code không đầy đủ nên cũng khó.
Code đầy đủ của em đây ạ, xét cả trường hợp năm nhuận rồi mà vẫn chưa biết lỗi ở đây ạ.
int namNhuan(int year);
int ngayTrongThang(int month);
int ngayTiepTheo(int& ngay,int& month, int& year);
Có mỗi cái hàm kiểm tra năm nhuận mà viết kinh khủng thế bạn :v
Đừng tạo 1 biến thừa là gt, chỗ nào return được là return luôn.
Hàm kiểm tra năm nhuận không cần biết là năm có nằm trong khoảng [1000, 3000] hay không, vì thế giới vào ngoài thời điểm đó vẫn sống nhăn răng Làm sao bị huỷ diệt mà phải giới hạn số năm làm gì.
Điều kiện kiểm tra năm nhuận là gì, cứ lắp vào là được. Sao phải code ngược lại điều kiện làm gì, khổ sở lắm, mà lại còn dễ sai nữa.
P/s: Chắc thớt chuyển từ code Pascal trên Turbo Pascal mới viết ra cái hàm như thế này. Dài dòng kinh khủng.
Vâng, tại em mới làm quen nên viết chưa được tốt lắm ạ.
Giờ còn mỗi lỗi 28/2 của năm không nhuận thì nó vẫn nhảy lên 29/2 mà em không biết mình sai ở đâu, thử giá trị của các hàm trên thì đúng hết. còn mỗi hàm NgayTiepTheo là trả về kết quả sai
Số ngày trong tháng phụ thuộc vào năm nữa nhé
Vả lại code hơi nhiều dấu ngoặc đơn
Bạn in ra số ngày của tháng 2 năm không nhuận xem ra cái gì.
Đây ạ, tháng vẫn in ra đúng mà cuối lại sai
Mình đã tìm ra lỗi trong bài của bạn, nguyên nhân là do bạn không chuyền giá trị vào biến
year
của hàmngayTrongThang
làm chương trình coi biếnyear
trong hàmngayTrongThang
có giá trị bằng 0, truyền vào hàmnamNhuan
đương nhiên nhận được kết quả là 0Code sau khi đã sửa
Ảnh chụp lần test trước khi sửa và sau khi sửa:
Em cảm ơn nhiều ạ