Şimdi Ara

C++ anlayanlara sorum ?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
198
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • C++ anlayanlara sorum ?

    Anlayan varsa, vakti olan varsa yardımcı olabilir mi ?




  • #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 ?





  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.