Bài tập tìm ngày trước đó k ngày

ngay tinhtoanluivekngay(ngay a,int k)
{
	int ngaysosanh= sothutungaytrongnam(a);
	int day = sothutungaytrongnam(a)-k;
	if (day > 0)
	{
		for (int j = a.thang; ngaysosanh == day; j--)
		{
			for (int i = a.ngay; i >= 0; i--)
			{
				a.ngay--;
				ngaysosanh--;
			}
			a.thang--;
			if (a.ngay == 0)
				a.ngay = songayla(a.thang, a.nam);
		}
	}
	return a;
}
int sothutungaytrongnam(ngay b)
{
     int sothutu = b.ngay;
	for (int i = 0; i < b.thang; i++)
	{
		sothutu =sothutu+ songayla(i,b.nam) ;
	}
	return sothutu;
}
int songayla(int x,int y)
{
	if ((y % 4 == 0) && (y % 100 != 0))
		y=1;
	else y=0;
	if (x == 0)
		return 0;
	else
		{
			if ((x == 4) || (x == 6) || (x == 9) || (x == 11))
				return 30;
			else
			{
				if ((x == 1) || (x == 3) || (x == 5) || (x == 7) || (x == 8) || (x == 10) || (x == 12))
					return 31;
				else
				{
					if ((x == 2) && (y == 0))
						return 28;
					else return 29;
				}
			}
		}
}
struct ngay
{
	int ngay;
	int thang;
	int nam;
};

Giúp em với ạ em nghĩ hướng của em đi ổn nhưng không biết chạy thì nó cứ ra như ban đầu ạ.

xem lai cai ham tinhtoanluivekngay. ban viet kho hieu that

1 Like

À mình sửa được rồi cảm ơn bạn

mình đã code được bài này nhưng nó khá dài vì mình làm theo ý tưởng của mình.Bạn nào muốn tham khảo thì gửi qua mail [email protected].Cảm ơn mọi người đã giúp đỡ quan tâm ạ.

Chắc quên tham chiếu phải ko :smiley:

Bài này cứ lưu ngày thứ n rồi trừ :slight_smile: để output thì đổi ngày thứ n ra ngày tháng năm.

3 Likes

mình chạy vòng vô hạn hay sao á bạn =))))) chả nhớ

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