08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

Yapılarla İlgili Uygulamalar<br />

Aşağıdaki programda bir tarih bilgisini tutmak amacıyla Date isimli bir yapı bildiriliyor. Bu<br />

yapı türünü kullanarak hizmet veren işlevler tanımlanıyor.<br />

/********** date.h **************************/<br />

typedef struct {<br />

int m_d;<br />

int m_m;<br />

int m_y;<br />

}Date;<br />

#define YEAR_BASE 1000<br />

#define false 0<br />

#define true 1<br />

typedef int bool;<br />

void set_date(Date *ptr, int d, int m, int y);<br />

void set_today(Date *ptr);<br />

void set_random(Date *ptr);<br />

void display_date(const Date *ptr);<br />

void inc_date(Date *p);<br />

void dec_date(Date *p);<br />

Date ndays(const Date *p, int n);<br />

int date_cmp(const Date *p1, const Date *p2);<br />

int get_day(const Date *p);<br />

int get_month(const Date *p);<br />

int get_year(const Date *p);<br />

int get_yearday(const Date *ptr);<br />

int get_weekday(const Date *ptr);<br />

bool isweekend(const Date *ptr);<br />

bool isleap(int y);<br />

/********** date.c **************************/<br />

#include <br />

#include <br />

#include <br />

#include <br />

#define PUBLIC<br />

#define PRIVATE static<br />

#define FACTOR 2<br />

PRIVATE int daytabs[2][13] = {<br />

{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},<br />

{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},<br />

};<br />

PRIVATE bool check_date(int d, int m, int y);<br />

PRIVATE int totaldays(const Date *p);<br />

PRIVATE Date revdate(int totaldays);<br />

PRIVATE bool check_date(int d, int m, int y)<br />

{<br />

if (y < YEAR_BASE)<br />

return false;<br />

if (m < 1 || m > 12)<br />

return false;<br />

403

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!