Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
1
Cevap
219
Tıklama
0
Öne Çıkarma
C++ anlayanlara sorum ?
H
5 yıl
Er
Konu Sahibi

< Resime gitmek için tıklayın >
Anlayan varsa, vakti olan varsa yardımcı olabilir mi ?

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



H
5 yıl
Er
Konu Sahibi

#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;
}


iki tarih arasındaki gün sayısını buluyorum fakat ondan sonra istediğim gün sayısını girip geçmiş bir tarihi yazdırmak istiyorum yardımcı olur musunuz ?



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.