Üst MenüForum kuralları Üst MenüGenel Haberler Üst MenüSoru Sorun Üst MenüForum Takımı Üst MenüReaL Para Üst MenüVİP Bölüm Üst MenüTurnuval Forum
OyunJet Bütün Oyunlar
Yeni Konu Gönder Yeni Yorum Gönder
 
Konuyu Oyla:
  • Toplam: 51 Oy - Ortalama: 3.33
  • 1
  • 2
  • 3
  • 4
  • 5
C++ İki tarih arasındaki gün farkı
Yazar Konu
Mistap Çevrimdışı
GameEditor
*
Emektar Üye

Yorum Sayısı: 841
Edilen Teşekkürler: 23
Alınan Teşekkürler:
63 mesajında 102 kere
Üyelik Tarihi: 16-01-2012

Rep Puanı: 578
ReaL Para: 820.61
Yorum: #1
C++ İki tarih arasındaki gün farkı
İki tarih arasındaki gün farkını bulan program
#include <stdio.h>
#include <stdlib.h>

typedef enum {FALSE, TRUE} BOOL;

#define YEARBASE 1900

typedef struct DATE_{
   int day;
   int month;
   int year;
}DATE;

BOOL is_leap(int year);
DATE *set_date(int day, int month, int year, DATE *date);
void print_date(const DATE *date);
long date_to_number(const DATE *date);
int day_of_year(const DATE *date);
long date_dif(const DATE *date1, const DATE *date2);
BOOL is_valid(const DATE *date);

char *days[]   = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
char *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
                  "Jul","Aug", "Sep", "Oct", "Nov", "Dec"};

int daytab[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

int main(void)
{
   int day, month, year;
   DATE d1, d2;

   for (;;) {
      printf("first date [day month year]: ");
      scanf("%d%d%d", &day, &month, &year);
      set_date(day, month, year, &d1);
      if (!is_valid(&d1))
         printf("invalid date!\n");
      else
         break;
   }

   for (;;) {
      printf("second date [day month year]: ");
      scanf("%d%d%d", &day, &month, &year);
      set_date(day, month, year, &d2);
      if (!is_valid(&d2))
         printf("invalid date!\n");
      else
         break;
   };

   printf("total days between ");
   print_date(&d1);
   printf(" and ");
   print_date(&d2);
   printf(": %d\n", date_dif(&d1, &d2));
   return 0;
}
/*************************************************/
BOOL is_leap(int year)
{
   return (year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
}
/*************************************************/
DATE *set_date(int day, int month, int year, DATE *date)
{
   date->day = day;
   date->month = month;
   date->year = year;
   return date;
}
/*************************************************/
void print_date(const DATE *date)
{
   printf("%02d", date->day);

   switch (date->day) {
      case 1: case 21: case 31:
         printf("st "); break;
      case 2: case 22:
         printf("nd "); break;
      case 3: case 23:
         printf("rd "); break;
      default :
         printf("th ");
   }
   printf("%s ", months[date->month - 1]);
   printf("%d ", date->year);
   printf("%s", days[(int)(date_to_number(date) % 7)]);
}
/*************************************************/
long date_to_number(const DATE *date)
{
   long result = 0;
   int year;

   for (year = YEARBASE; year < date->year; year++)
      result += 365 + is_leap(year);
   result += day_of_year(date);
   return result;
}
/*************************************************/
int day_of_year(const DATE *date)
{
   int k;
   int result = date->day;

   daytab[1] = 28 + is_leap(date->year);

   for  (k = 0; k < date->month - 1; ++k)
      result += daytab[k];
   return result;
}
/*************************************************/
long date_dif(const DATE *date1, const DATE *date2)
{
   return date_to_number(date1) - date_to_number(date2);
}
/*************************************************/
BOOL is_valid(const DATE *date)
{
   daytab[1] = 28 + is_leap(date->year);

   if (date->year < YEARBASE)
      return FALSE;
   if (date->day > daytab[date->month - 1] || date->day <= 0)
      return FALSE;
   if (date->month < 1 || date->month > 12)
      return FALSE;

   return TRUE;
}

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
18-02-2012 21:35
kullanıcının tüm mesajlarını bul Teşekkür Et Alıntı ile Cevapla
ActionHG Çevrimdışı
HG
*
Emektar Üye

Yorum Sayısı: 408
Edilen Teşekkürler: 5
Alınan Teşekkürler:
34 mesajında 53 kere
Üyelik Tarihi: 14-01-2012

Rep Puanı: 567
ReaL Para: 767.30
Yorum: #2
RE: C++ İki tarih arasındaki gün farkı
Süper ama açıklaması yok hemde alıntı galiba. Gülümseme

Game Maker, Dev C++ ve Google SketcUp User
Ö.M.den (özellikle game maker hakkında) istediğiniz soruyu sorabilirsiniz yardım ederim.
18-02-2012 21:55
kullanıcının web sitesini ziyaret et kullanıcının tüm mesajlarını bul Teşekkür Et Alıntı ile Cevapla
Mistap Çevrimdışı
GameEditor
*
Emektar Üye

Yorum Sayısı: 841
Edilen Teşekkürler: 23
Alınan Teşekkürler:
63 mesajında 102 kere
Üyelik Tarihi: 16-01-2012

Rep Puanı: 578
ReaL Para: 820.61
Yorum: #3
RE: C++ İki tarih arasındaki gün farkı
alıntı olduğu doğru ve acı bi gerçek Gülümseme Pdf olarak 30-40 tane kod paylaşmayı düşünüyorum

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
18-02-2012 21:58
kullanıcının tüm mesajlarını bul Teşekkür Et Alıntı ile Cevapla
Yeni Konu Gönder Yeni Yorum Gönder


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  C++ İki Sayı Arasındaki Sayıları Toplama ActionHG 2 2,271 11-03-2012 17:47
Son Yorum: ActionHG

Hızlı Menü:


Şu anda bu konuyu okuyanlar: 1 Ziyaretçi


Kurucu » Yönetici » Üst Yetkili » Yetkili » Platin Üye » Gold Üye » Silver Üye » Yeni Üye » Yasaklı Üye

Dost Linkler
İletişimReaLses Yukarı GitArşivRSS Beslemesi