SensiZOlmuyoR.org  
Geri git   SensiZOlmuyoR.org > Pc - Bilgisayar > Programlama > C ve C++
İhbar sistemini kullanmak istermisin?


En iyi Paylaşımınız Ney¿

Cevapla
 
Konu Araçları Stil
Eski 28-01-2008, 14:32   #1 (permalink)
Banlandı
 
*MeLeK* - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Kas 2007
Nerden: napıcan ziyaretemi geLcen!!
Mesajlar: 0
Konular: 2724
Üye No: 11416
Ruh halim:
Rep Gücü : 0
Rep Puanı : 0
Rep Seviyesi : *MeLeK* has a little shameless behaviour in the past


Standart İki Tarih Arasındaki Gün Farkını Bulan Program


İki tarih arasındaki gün farkını bulmak için verilen bir tarihi, 01/01/1900 tarihinden itibaren geçen toplam gün sayısına çeviren bir yardımcı fonksiyon kullanılıyor.


first date [day month year]: 20 12 2000
second date [day monty year]: 10 12 1973
total days between 20th Dec 2000 Wed and 10th Dec 1973 Mon: 9872

first date [day month year]: 01 01 1998
second date [day month year]: 01 12 1950
total days between 01st Jan 1998 Thu and 01st Dec 1950 Fri: 17198


Kod:
#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;
}
*MeLeK* isimli üyemiz çevrimdışıdır. (Offline)  
Bu Mesajı Google'a Ekle!Bu Mesajı FaceBook'da Paylaş!
Alıntı ile Cevapla
Cevapla

Bu konunun kısa yolunu aşağıdaki sitelere ekleyebilirsiniz!

Konu Araçları
Stil

Yetkileriniz
Konu Açma Yetkiniz Yok
Mesaj Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı

Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar son Mesaj
süper kasmayan virüsleri bulan ve silen antivirüs empty34 Programlar 14 28-10-2008 22:03
OPK HACKİ BULAN VARMI VARSA LİNKİ KOYABİLİRMİ kamil50 WarRock Hack 0 22-06-2008 23:45
Dinar Hack Bulan Varmı NeverMore WarRock 3 09-06-2008 00:50
Program Ekle/Kaldır da silinmeyen program isimleri nasıl silinir? *MeLeK* Bilgisayar 1 14-02-2008 17:31
Ad Ve Soyad İle Msn Adresİ Bulan Program !!!! wanted Msn, Icq, Yahoo Messenger 4 07-03-2007 17:01


Tüm Saatler GMT +3. Şuan Saat: 16:39 .
(Türkiye için GMT +2 seçilmelidir.)


Powered by vBulletin Version 3.7.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
www.SensiZOlmuyoR.org © 2007 - 2008


Bağış yapın

* Metin2 * Trendy Bayan *Sohbet * Bilgisonsuz