kullanıcının girecegi 2 tarih arasındaki gun farkını nasıl bulabilirim?

Kod: // Compiled with VC++ // Compiled by 0guzhan // www.wardom.org/0guzhan // to go2hell ;) #include "stdio. h" #include "stdlib. h" int aylar = ; int artikYilinAylari = ; typedef struct tarih TARIH; int kacGun ; int gecerlilik ; int kontrol ; int _artikYil ; int ayVeGunHesapla ; void main { int knt; TARIH ilk; //= malloc(sizeof ; TARIH ikinci; //= malloc(sizeof ; // girdileri de kodu kopyalayan düzenlesin! ;) ilk. gg = 17; ilk. aa = 11; ilk. yyyy = 2007; ikinci. gg = 11; ikinci. aa = 5; ikinci. yyyy = 1986; if (gecerlilik 0 || gecerlilik 0) knt = kontrol ; if(knt -1) else if(knt 0) else printf("Iki tarih arasindaki gun farki = %d\n\n\n", kacGun ; } // iki tarih arasındaki gün farkını tam sayı tipinde geri döndürüyor! int kacGun { int gunFarki = 0; int say; int yilSay; yilSay = ikinciTarih. yyyy; for(say = 0; say < ilkTarih. yyyy-ikinciTarih. yyyy; say++){ if (_artikYil 1) else gunFarki = gunFarki + 365; yilSay++; } gunFarki = gunFarki + (ayVeGunHesapla - ayVeGunHesapla ; return gunFarki; } // parametre olarak girilen // ayın ilk gününüe kadar kaç gün geçmiş int ayVeGunHesapla { int gunFarki = 0; int say ; if (_artikYil 1){ for (say = 1; say < trh. aa; say++) gunFarki = gunFarki + trh. gg; } else { for (say = 1; say < trh. aa; say++) gunFarki = gunFarki + trh. gg; } return gunFarki; } // girilen tarihi kıyaslıyor // eğer ikisi aynı ise -1 // birinci, ikinciden daha yeni ise 1 // ikinci, birinciden daha yeni ise 0 int kontrol { if else if { if else if { if else if else return 0; } else return 0; } else return 0; } // tarihin var olup olmadıgını denetler // varsa 1, // tarih yanlış girilmişse mesela şubatın 30 u veya 13. ay gibi // 0 döndürür! int gecerlilik { if (_artikYil 1){ if else if (trh. aa > 12) else return 1; } else { if else if (trh. aa > 12) else return 1; } } // artık yıl olup olmadıgı denetlemek için!... // artık yıl ise 1 // değil ise 0 int _artikYil { if ( (YIL%4 0 && YIL%100!=0) || YIL%400 0) // serdar-x' in uyarısı üzerine düzeltilmiştir ;) else return 0; } Eyvallah... :cool2: -

eyw kardeş

artık yıl hesaplamasında yanlışlık var 400e bölünemeyip 100e bölünebilen yıllar artık yıl sayılmaz mesela 1700 1800 1900 2100 artık yıl değildir ama 2000 400e bölünebildiği için artık yıldır bu yüzden if (YIL % 4 0) olan yeri if ( (YIL%4 0 && YIL%100!=0) || YIL%400 0) şeklinde düzeltmek gerekir

Ne demek... Gün farkını bulabiliyorsun, artık hangi günün haftanın hangi günü oldugunu da hesaplatırsın Bkz. Modular Aritmetik Serdar-