Toggle Width

EndFRM
 
Konuyu Oyla:
  • Toplam: 51 Oy - Ortalama: 3.33
  • 1
  • 2
  • 3
  • 4
  • 5
C++ İki tarih arasındaki gün farkı
Mistap Çevrimdışı GameEditor
*
Emektar Üye
Üye No: 20
Konu Sayısı:
Yorum Sayısı: 841
578
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
Bul Alıntı
ActionHG Çevrimdışı HG
*
Emektar Üye
Üye No: 2
Konu Sayısı:
Yorum Sayısı: 408
567
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
Bul Alıntı
Mistap Çevrimdışı GameEditor
*
Emektar Üye
Üye No: 20
Konu Sayısı:
Yorum Sayısı: 841
578
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
Bul Alıntı


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

Hızlı Menü:


Şu anda bu konuyu okuyanlar: 1 Ziyaretçi