`#include <iostream>
using namespace std;
int check_leap_year(int year)
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) //artık yıl
return 1;
else
return 0;
}
int no_of_days_in_month(int month, int year)
{
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) //31 çeken aylar
return 31;
if (month == 4 || month == 6 || month == 9 || month == 11) //30 çeken aylar
return 30;
if (month == 2) //şubat, artık yıl ise 29 yoksa 28 çeker
{
int n = check_leap_year(year);
if (n == 1)
return 29;
else
return 28;
}
}
long long int difference_of_days(int day1, int month1, int year1, int day2, int month2, int year2) //aynı tarihler için
{
if (year1 == year2)
{
if (month1 == month2)
{
if (day1 == day2)
return 0;
else
return abs(day1 - day2); //aynı yıl, aynı ay ama farklı günler için
}
else if (month1 < month2) //aynı yıl, aynı gün ama farklı aylar için
{
int result = 0;
for (int i = month1; i < month2; i++)
result = result + no_of_days_in_month(i, year1);
if (day1 == day2)
return result;
else if (day1 < day2)
{
result = result + (day2 - day1);
return result;
}
else
{
result = result - (day1 - day2);
return result;
}
}
else
{
int result = 0;
for (int i = month2; i < month1; i++)
result = result + no_of_days_in_month(i, year1);
if (day1 == day2)
return result;
else if (day2 < day1)
{
result = result + (day1 - day2);
return result;
}
else
{
result = result - (day2 - day1);
return result;
}
}
}
else if (year1 < year2)
{
int temp = 0;
for (int i = year1; i < year2; i++)
{
if (check_leap_year(i))
temp = temp + 366;
else
temp = temp + 365;
}
if (month1 == month2) //aynı ay, aynı gün ama farklı yıllar için
{
if (day1 == day2)
return temp;
else if (day1 < day2)
return temp + (day2 - day1);
else
return temp - (day1 - day2);
}
else if (month1 < month2)
{
int result = 0;
for (int i = month1; i < month2; i++)
result = result + no_of_days_in_month(i, year2);
if (day1 == day2) //aynı gün, farklı yıl ve farklı ay için
return temp + result;
else if (day1 < day2)
{
result = result + (day2 - day1);
return temp + result;
}
else
{
result = result - (day1 - day2);
return temp + result;
}
}
else
{
int result = 0;
for (int i = month2; i < month1; i++)
result = result + no_of_days_in_month(i, year2);
if (day1 == day2)
return temp - result;
else if (day2 < day1)
{
result = result + (day1 - day2);
return temp - result;
}
else
{
result = result - (day2 - day1);
return temp - result;
}
}
}
else
{
int temp = 0;
for (int i = year2; i < year1; i++)
{
if (check_leap_year(i))
temp = temp + 366;
else
temp = temp + 365;
}
if (month1 == month2)
{
if (day1 == day2) //aynı gün, aynı ay ama farklı yıl için
return temp;
else if (day2 < day1)
return temp + (day1 - day2);
else
return temp - (day2 - day1);
}
else if (month2 < month1)
{
int result = 0;
for (int i = month2; i < month1; i++)
result = result + no_of_days_in_month(i, year1);
if (day1 == day2)
return temp + result;
else if (day2 < day1)
{
result = result + (day1 - day2);
return temp + result;
}
else
{
result = result - (day2 - day1);
return temp + result;
}
}
else
{
int result = 0;
for (int i = month1; i < month2; i++)
result = result + no_of_days_in_month(i, year1);
if (day1 == day2) //aynı gün, farklı yıl ve farklı ay için
return temp - result;
else if (day1 < day2)
{
result = result + (day2 - day1);
return temp - result;
}
else
{
result = result - (day1 - day2);
return temp - result;
}
}
}
}
int main()
{
int day1, day2, month1, month2, year1, year2, daynumber;
int n;
cout << "Ilk tarihi giriniz=>\n"; //Her iki tarihin girilmesi
cout << "Gun :";
cin >> day1;
cout << "Ay (Ornek: Ocak icin '1' yaziniz) :";
cin >> month1;
cout << "Yil :";
cin >> year1;
n = no_of_days_in_month(month1, year1);
if (day1<1 || day1>n || month1 < 1 || month1 >12 || year1 < 1) //girilen tarihin geçerli olup olmadığını kontrol etmek için
{
cout << "\nGirilen tarih gecerli degil";
exit(0); //girilen tarih geçersiz ise programdan çıkmak için
}
cout << "\nIkinci tarihi giriniz=>\n";
cout << "Gun :";
cin >> day2;
cout << "Ay (Ornek: Ocak icin '1' yaziniz) :";
cin >> month2;
cout << "Yil :";
cin >> year2;
n = no_of_days_in_month(month2, year2);
if (day2<1 || day2>n || month2 < 1 || month2 >12 || year2 < 1)
{
cout << "\nGirilen tarih gecerli degil";
exit(0);
}
long long int diff = difference_of_days(day1, month1, year1, day2, month2, year2); //2 tarih arasındaki farkı gün sayısı olarak saymak için
cout << "\n2 tarih arasindaki fark =>";
cout << "\nGun sayisi :" << diff << " gun";
cout << "\nGeriye gidilecek gun sayisini giriniz=>\n";
cout << "Sayi :";
cin >> daynumber;
cout << "\nHesaplanan Tarihe Gidiliyor =>";
return 0;
}`
Şeklinde 2 tarih arasındaki gün sayısını gösteren bir kod yazdım fakat son kısmı toparlayamadım. Son kısımda ise girilen gün sayısı kadar geçmişe gidip o tarihi yazdırmam lazım. Yardımcı olur musunuz ?