94
1 Structures Containing Arrays This type of structure can be declared in C. In other word, each item in array is a structure itself. Example: struct tarikh cuti[3]; Allocation for 3 dates

1 Structures Containing Arrays This type of structure can be declared in C. In other word, each item in array is a structure itself. Example: struct tarikh

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

1

Structures Containing Arrays This type of structure can be declared

in C. In other word, each item in array

is a structure itself.

Example:

struct tarikh cuti[3];

Allocation for 3 dates

2

Structures Containing Arrays

???hari

bulan

tahun

tarikhLahir

???

???

???hari

bulan

tahun

???

???

???hari

bulan

tahun

???

???

???hari

bulan

tahun

???

???

cuti

struct tarikh tarikhLahir;

struct tarikh cuti[3];

3

Structures Containing Arrays???hari

bulan

tahun

???

???

???hari

bulan

tahun

???

???

???hari

bulan

tahun

???

???

cuti

struct tarikh cuti[3];cuti[0].hari = 1;cuti[0].bulan = 1;cuti[0].tahun = 2004;cuti[1].hari = 1;cuti[1].bulan = 6;cuti[1].tahun = 2004;scanf("%d%d%d",

&(cuti[2].hari),&(cuti[2].bulan),&(cuti[2].tahun));

[0]

[1]

[2]

4

Structures Containing Arrays1hari

bulan

tahun

1

2004

???hari

bulan

tahun

???

???

???hari

bulan

tahun

???

???

cuti

[0]

[1]

[2]

struct tarikh cuti[3];cuti[0].hari = 1;cuti[0].bulan = 1;cuti[0].tahun = 2004;cuti[1].hari = 1;cuti[1].bulan = 6;cuti[1].tahun = 2004;scanf("%d%d%d",

&(cuti[2].hari),&(cuti[2].bulan),&(cuti[2].tahun));

5

Structures Containing Arrays1hari

bulan

tahun

1

2004

1hari

bulan

tahun

6

2004

???hari

bulan

tahun

???

???

cuti

[0]

[1]

[2]

struct tarikh cuti[3];cuti[0].hari = 1;cuti[0].bulan = 1;cuti[0].tahun = 2004;cuti[1].hari = 1;cuti[1].bulan = 6;cuti[1].tahun = 2004;scanf("%d%d%d",

&(cuti[2].hari),&(cuti[2].bulan),&(cuti[2].tahun));

6

Structures Containing Arrays1hari

bulan

tahun

1

2004

1hari

bulan

tahun

6

2004

20hari

bulan

tahun

3

2004

cuti

[0]

[1]

[2]

struct tarikh cuti[3];cuti[0].hari = 1;cuti[0].bulan = 1;cuti[0].tahun = 2004;cuti[1].hari = 1;cuti[1].bulan = 6;cuti[1].tahun = 2004;scanf("%d%d%d",

&(cuti[2].hari),&(cuti[2].bulan),&(cuti[2].tahun));

20 3 2004 _

7

Structures Containing An Item of structure This type of structure is more complex.

Example:struct cuti {

char nama[15];

struct tarikh trkh;

};Item of trkh is an item of structure

8

Example:struct cuti {

char nama[15];struct tarikh trkh;

};struct cuti cuti_am;strcpy(cuti_am.nama, "Tahun Baru");cuti_am.trkh.hari = 1;cuti_am.trkh.bulan = 1;cuti_am.trkh.tahun = 2004;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?nama

cuti_am ???hari

bulan

tahun

???

???

trkh

9

Example:struct cuti {

char nama[15];struct tarikh trkh;

};struct cuti cuti_am;strcpy(cuti_am.nama, "Tahun Baru");cuti_am.trkh.hari = 1;cuti_am.trkh.bulan = 1;cuti_am.trkh.tahun = 2004;

'T''a''h''u''n' ' ' 'B''a''r''u''\0' ? ? ? ?nama

cuti_am ???hari

bulan

tahun

???

???

trkh

10

Example:struct cuti {

char nama[15];struct tarikh trkh;

};struct cuti cuti_am;strcpy(cuti_am.nama, "Tahun Baru");cuti_am.trkh.hari = 1;cuti_am.trkh.bulan = 1;cuti_am.trkh.tahun = 2004;

'T''a''h''u''n' ' ' 'B''a''r''u''\0' ? ? ? ?nama

cuti_am 1hari

bulan

tahun

1

2004

trkh

11

Example:struct cuti {

char nama[15];struct tarikh trkh;

};

struct cuti cuti_am;strcpy(cuti_am.nama, "Tahun Baru");scanf("%d%d%d", &(cuti_am.trkh.hari), &(cuti_am.trkh.bulan),

&(cuti_am.trkh.tahun));

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?nama

cuti_am ???hari

bulan

tahun

???

???

trkh

12

Example:struct cuti {

char nama[15];struct tarikh trkh;

};

'T''a''h''u''n' ' ' 'B''a''r''u''\0' ? ? ? ?nama

cuti_am ???hari

bulan

tahun

???

???

trkh

struct cuti cuti_am;strcpy(cuti_am.nama, "Tahun Baru");scanf("%d%d%d", &(cuti_am.trkh.hari), &(cuti_am.trkh.bulan),

&(cuti_am.trkh.tahun));

13

Contoh:struct cuti {

char nama[15];struct tarikh trkh;

};

struct cuti cuti_am;strcpy(cuti_am.nama, "Tahun Baru");scanf("%d%d%d", &(cuti_am.trkh.hari), &(cuti_am.trkh.bulan),

&(cuti_am.trkh.tahun));

1 1 2004 _

'T''a''h''u''n' ' ' 'B''a''r''u''\0' ? ? ? ?nama

cuti_am 1hari

bulan

tahun

1

2004

trkh

14

Bear in mind!!! The item of structure

cannot be the type of that structure

Example :struct cuti {

char nama[15];

struct cuti cutilain;

};

ERROR!

15

Structure and function

The structure can also be used with

function.

16

int main() { struct cuti hari_cuti = { "Tahun Baru", 1, 1, 2004 }; struct tarikh tkh; scanf("%d%d%d", &tkh.hari, &tkh.bulan, &tkh.tahun); if (sama(hari_cuti.trkh, tkh)) printf("%s", hari_cuti.nama);}int sama(struct tarikh t1, struct tarikh t2) { if ( t1.hari == t2.hari && t1.bulan == t2.bulan &&

t1.tahun == t2.tahun) return 1; else return 0;}

'T''a''h''u''n' ' ' 'B''a''r''u''\0' ? ? ? ?nama

1hari bulan tahuntrkh 20041hari_cuti

???hari bulan tahun ??????tkh

17

int main() { struct cuti hari_cuti = { "Tahun Baru", 1, 1, 2004 }; struct tarikh tkh; scanf("%d%d%d", &tkh.hari, &tkh.bulan, &tkh.tahun); if (sama(hari_cuti.trkh, tkh)) printf("%s", hari_cuti.nama);}int sama(struct tarikh t1, struct tarikh t2) { if ( t1.hari == t2.hari && t1.bulan == t2.bulan &&

t1.tahun == t2.tahun) return 1; else return 0;}

'T''a''h''u''n' ' ' 'B''a''r''u''\0' ? ? ? ?nama

1hari bulan tahuntrkh 20041hari_cuti

1hari bulan tahun 20043tkh

Contoh:1 3 2004 _

18

int main() { struct cuti hari_cuti = { "Tahun Baru", 1, 1, 2004 }; struct tarikh tkh; scanf("%d%d%d", &tkh.hari, &tkh.bulan, &tkh.tahun); if (sama(hari_cuti.trkh, tkh)) printf("%s", hari_cuti.nama);}int sama(struct tarikh t1, struct tarikh t2) { if ( t1.hari == t2.hari && t1.bulan == t2.bulan &&

t1.tahun == t2.tahun) return 1; else return 0;}

'T''a''h''u''n' ' ' 'B''a''r''u''\0' ? ? ? ?nama

1hari bulan tahuntrkh 20041hari_cuti

1hari bulan tahun 20043tkh

Contoh:1 3 2004 _

19

int main() { struct cuti hari_cuti = { "Tahun Baru", 1, 1, 2004 }; struct tarikh tkh; scanf("%d%d%d", &tkh.hari, &tkh.bulan, &tkh.tahun); if (sama(hari_cuti.trkh, tkh)) printf("%s", hari_cuti.nama);}int sama(struct tarikh t1, struct tarikh t2) { if ( t1.hari == t2.hari && t1.bulan == t2.bulan &&

t1.tahun == t2.tahun) return 1; else return 0;}

'T''a''h''u''n' ' ' 'B''a''r''u''\0' ? ? ? ?nama

1hari bulan tahuntrkh 20041hari_cuti

1hari bulan tahun 20043tkh

Contoh:1 3 2004 _

20

int main() { struct cuti hari_cuti = { "Tahun Baru", 1, 1, 2004 }; struct tarikh tkh; scanf("%d%d%d", &tkh.hari, &tkh.bulan, &tkh.tahun); if (sama(hari_cuti.trkh, tkh)) printf("%s", hari_cuti.nama);}int sama(struct tarikh t1, struct tarikh t2) { if ( t1.hari == t2.hari && t1.bulan == t2.bulan &&

t1.tahun == t2.tahun) return 1; else return 0;}

'T''a''h''u''n' ' ' 'B''a''r''u''\0' ? ? ? ?nama

1hari bulan tahuntrkh 20041hari_cuti

1hari bulan tahun 20043tkh

1 1 2004 _

1hari bulan tahun 20041t1

1hari bulan tahun 20043t2

21

int main() { struct cuti hari_cuti = { "Tahun Baru", 1, 1, 2004 }; struct tarikh tkh; scanf("%d%d%d", &tkh.hari, &tkh.bulan, &tkh.tahun); if (sama(hari_cuti.trkh, tkh)) printf("%s", hari_cuti.nama);}int sama(struct tarikh t1, struct tarikh t2) { if ( t1.hari == t2.hari && t1.bulan == t2.bulan &&

t1.tahun == t2.tahun) return 1; else return 0;}

1 1 2004 _

1hari bulan tahun 20041t1

1hari bulan tahun 20043t2

22

int main() { struct cuti hari_cuti = { "Tahun Baru", 1, 1, 2004 }; struct tarikh tkh; scanf("%d%d%d", &tkh.hari, &tkh.bulan, &tkh.tahun); if (sama(hari_cuti.trkh, tkh)) printf("%s", hari_cuti.nama);}int sama(struct tarikh t1, struct tarikh t2) { if ( t1.hari == t2.hari && t1.bulan == t2.bulan &&

t1.tahun == t2.tahun) return 1; else return 0;}

1 1 2004 _

1hari bulan tahun 20041t1

1hari bulan tahun 20043t2

23

int main() { struct cuti hari_cuti = { "Tahun Baru", 1, 1, 2004 }; struct tarikh tkh; scanf("%d%d%d", &tkh.hari, &tkh.bulan, &tkh.tahun); if (sama(hari_cuti.trkh, tkh)) printf("%s", hari_cuti.nama);}int sama(struct tarikh t1, struct tarikh t2) { if ( t1.hari == t2.hari && t1.bulan == t2.bulan &&

t1.tahun == t2.tahun) return 1; else return 0;}

1 1 2004 _

1hari bulan tahun 20041t1

1hari bulan tahun 20043t2

24

int main() { struct cuti hari_cuti = { "Tahun Baru", 1, 1, 2004 }; struct tarikh tkh; scanf("%d%d%d", &tkh.hari, &tkh.bulan, &tkh.tahun); if (sama(hari_cuti.trkh, tkh)) printf("%s", hari_cuti.nama);}int sama(struct tarikh t1, struct tarikh t2) { if ( t1.hari == t2.hari && t1.bulan == t2.bulan &&

t1.tahun == t2.tahun) return 1; else return 0;}

0

'T''a''h''u''n' ' ' 'B''a''r''u''\0' ? ? ? ?nama

1hari bulan tahuntrkh 20041hari_cuti

1hari bulan tahun 20043tkh

25

int main() { struct cuti hari_cuti = { "Tahun Baru", 1, 1, 2004 }; struct tarikh tkh; scanf("%d%d%d", &tkh.hari, &tkh.bulan, &tkh.tahun); if (sama(hari_cuti.trkh, tkh)) printf("%s", hari_cuti.nama);}int sama(struct tarikh t1, struct tarikh t2) { if ( t1.hari == t2.hari && t1.bulan == t2.bulan &&

t1.tahun == t2.tahun) return 1; else return 0;}

'T''a''h''u''n' ' ' 'B''a''r''u''\0' ? ? ? ?nama

1hari bulan tahuntrkh 20041hari_cuti

1hari bulan tahun 20043tkh

1 3 2004 _

26

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

8hari bulan tahuntkh1 31 1957

???hari bulan tahuntkh2 ??? ???

2hari bulan tahun1 2000

3hari bulan tahunsen

2 2000

27

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

8hari bulan tahuntkh1 31 1957

???hari bulan tahuntkh2 ??? ???

2hari bulan tahun1 2000

3hari bulan tahunsen

2 2000

28

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

8hari bulan tahuntkh1 31 1957

???hari bulan tahuntkh2 ??? ???

2hari bulan tahun1 2000

3hari bulan tahunsen

2 2000

???hari bulan tahunt1 ??? ???

???hari bulan tahunt2 ??? ???

??? s_tbil ???

29

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

8hari bulan tahuntkh1 31 1957

???hari bulan tahuntkh2 ??? ???

2hari bulan tahun1 2000

3hari bulan tahunsen

2 2000

8hari bulan tahunt1 31 1957

???hari bulan tahunt2 ??? ???

2 s_tbil

30

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

2hari bulan tahun1 2000

3hari bulan tahunsen

2 2000

8hari bulan tahunt1 31 1957

???hari bulan tahunt2 ??? ???

2 s_tbili ???

31

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

2hari bulan tahun1 2000

3hari bulan tahunsen

2 2000

8hari bulan tahunt1 31 1957

8hari bulan tahunt2 31 1957

2 s_tbili ???

32

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

2hari bulan tahun1 2000

3hari bulan tahunsen

2 2000

8hari bulan tahunt1 31 1957

8hari bulan tahunt2 31 1957

2 s_tbili ???

33

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

2hari bulan tahun1 2000

3hari bulan tahunsen

2 2000

8hari bulan tahunt1 31 1957

8hari bulan tahunt2 31 1957

2 s_tbili 0

34

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

2hari bulan tahun1 2000

3hari bulan tahunsen

2 2000

8hari bulan tahunt1 31 1957

8hari bulan tahunt2 31 1957

2 s_tbili 0

35

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

8hari bulan tahun31 1957

3hari bulan tahunsen

2 2000

8hari bulan tahunt1 31 1957

8hari bulan tahunt2 31 1957

2 s_tbili 0

36

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

8hari bulan tahun31 1957

3hari bulan tahunsen

2 2000

8hari bulan tahunt1 31 1957

8hari bulan tahunt2 31 1957

2 s_tbili 1

37

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

8hari bulan tahun31 1957

3hari bulan tahunsen

2 2000

8hari bulan tahunt1 31 1957

8hari bulan tahunt2 31 1957

2 s_tbili 1

38

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

8hari bulan tahun31 1957

8hari bulan tahunsen

31 1957

8hari bulan tahunt1 31 1957

8hari bulan tahunt2 31 1957

2 s_tbili 1

39

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

8hari bulan tahun31 1957

8hari bulan tahunsen

31 1957

8hari bulan tahunt1 31 1957

8hari bulan tahunt2 31 1957

2 s_tbili 2

40

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

8hari bulan tahun31 1957

8hari bulan tahunsen

31 1957

8hari bulan tahunt1 31 1957

8hari bulan tahunt2 31 1957

2 s_tbili 2

41

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

8hari bulan tahun31 1957

8hari bulan tahunsen

31 1957

8hari bulan tahuntkh1 31 1957

???hari bulan tahuntkh2 ??? ???

42

int main() { struct tarikh sen[2] = { {1, 2, 2000}, {2, 3, 2000} }; struct tarikh tkh1 = { 31, 8, 1957 }; struct tarikh tkh2; setTarikh(tkh1, tkh2, sen, 2);}int setTarikh(struct tarikh t1, struct tarikh t2, struct tarikh s_t[], int bil) { int i; t2 = t1; for (i=0; i < bil; i++) s_t[i] = t1;}

8hari bulan tahun31 1957

8hari bulan tahunsen

31 1957

8hari bulan tahuntkh1 31 1957

???hari bulan tahuntkh2 ??? ???

43

Function can be used to return a

structure. That’s mean, function

can be initialized as structure type

44

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

???hari bulan tahuntarikhLahir ??? ???

???hari bulan tahun??? ???tarikhMasuk

45

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

???hari bulan tahuntarikhLahir ??? ???

???hari bulan tahun??? ???tarikhMasuk

46

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

???hari bulan tahuntarikhLahir ??? ???

???hari bulan tahun??? ???tarikhMasuk

47

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

???hari bulan tahun??? ???t

48

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

???hari bulan tahun28 ???t

Contoh:

Hari: 28_

49

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

4hari bulan tahun28 ???t

Contoh:

Hari: 28Bulan: 4_

50

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

4hari bulan tahun28 2002t

Contoh:

Hari: 28Bulan: 4Tahun: 2002_

51

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

4hari bulan tahun28 2002t

Contoh:

Hari: 28Bulan: 4Tahun: 2002_

{ 28, 4, 2002 }

52

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

Contoh:

Hari: 28Bulan: 4Tahun: 2002_

4hari bulan tahuntarikhLahir 28 2002

???hari bulan tahun??? ???tarikhMasuk

53

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

4hari bulan tahuntarikhLahir 28 2002

???hari bulan tahun??? ???tarikhMasuk

Contoh:

Hari: 28Bulan: 4Tahun: 2002_

54

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

4hari bulan tahuntarikhLahir 28 2002

???hari bulan tahun??? ???tarikhMasuk

Contoh:

Hari: 28Bulan: 4Tahun: 2002_

55

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

???hari bulan tahun??? ???t

Contoh:

Hari: 28Bulan: 4Tahun: 2002_

56

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

???hari bulan tahun20 ???t

Contoh:

Hari: 28Bulan: 4Tahun: 2002Hari: 20_

57

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

10hari bulan tahun20 ???t

Contoh:

Bulan: 4Tahun: 2002Hari: 20Bulan: 10_

58

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

10hari bulan tahun20 1999t

Contoh:

Tahun: 2002Hari: 20Bulan: 10Tahun: 1999_

59

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

10hari bulan tahun20 1999t

{ 20, 10, 1999 }

Contoh:

Tahun: 2002Hari: 20Bulan: 10Tahun: 1999_

60

int main() { struct tarikh tarikhLahir, tarikhMasuk; tarikhLahir = inputTarikh(); tarikhMasuk = inputTarikh();}struct tarikh inputTarikh() { struct tarikh t; printf("Hari: "); scanf("%d", &t.hari); printf("Bulan: "); scanf("%d", &t.bulan); printf("Tahun: "); scanf("%d", &t.tahun); return t;}

4hari bulan tahuntarikhLahir 28 2002

10hari bulan tahun20 1999tarikhMasuk

Contoh:

Tahun: 2002Hari: 20Bulan: 10Tahun: 1999_

61

Type-defined structure (typedef) typedef is the most powerful tools to

declare a structure. Note that the

typedef name is all UPPERCASE.

Example :

typedef float METER;

METER lebar, tinggi;

62

Example:

struct pelajar { char nama[15]; struct tarikh tarikhMasuk;};typedef struct pelajar PELAJAR;

int main() { PELAJAR pelajar; gets(pelajar.nama); scanf("%d%d%d", &pelajar.tarikhMasuk.hari, &pelajar.tarikhMasuk.bulan, &pelajar.tarikhMasuk.tahun); ...}

63

Example:

typedef struct pelajar { char nama[15]; struct tarikh tarikhMasuk;} PELAJAR;

int main() { PELAJAR pelajar; gets(pelajar.nama); scanf("%d%d%d", &pelajar.tarikhMasuk.hari, &pelajar.tarikhMasuk.bulan, &pelajar.tarikhMasuk.tahun); ...}

64

An example of using structure Problem : Write a program that can

receive a date and produce the number

of days from 1st January to the specific

date.

65

#include <stdio.h>typedef struct tarikh { int hari, bulan, tahun;} TARIKH;

TARIKH bacaTarikh();int kiraHari(TARIKH);void outputHasil(TARIKH, int);int jumHari(int, int);

int main() { TARIKH tkh; int bil; tkh = bacaTarikh(); bil = kiraHari(tkh); outputHasil(tkh, bil);}

???hari bulan tahun??? ???tkh

bil ???

66

#include <stdio.h>typedef struct tarikh { int hari, bulan, tahun;} TARIKH;

TARIKH bacaTarikh();int kiraHari(TARIKH);void outputHasil(TARIKH, int);int jumHari(int, int);

int main() { TARIKH tkh; int bil; tkh = bacaTarikh(); bil = kiraHari(tkh); outputHasil(tkh, bil);}

???hari bulan tahun??? ???tkh

bil ???

67

TARIKH bacaTarikh() { struct tarikh t; printf("Masukkan tarikh: "); scanf("%d%d%d", &t.hari, &t.bulan, &t.tahun); return t;}void outputHasil(TARIKH t, int bilHari) { printf("%d/%d/%d adalah hari ke-%d dalam tahun %d\n", t.hari, t.bulan, t.tahun, bilHari, t.tahun);}

???hari bulan tahun??? ???t

68

TARIKH bacaTarikh() { struct tarikh t; printf("Masukkan tarikh: "); scanf("%d%d%d", &t.hari, &t.bulan, &t.tahun); return t;}void outputHasil(TARIKH t, int bilHari) { printf("%d/%d/%d adalah hari ke-%d dalam tahun %d\n", t.hari, t.bulan, t.tahun, bilHari, t.tahun);}

2hari bulan tahun4 2004t

Contoh:

Masukkan tarikh: 4 2 2004_

69

TARIKH bacaTarikh() { struct tarikh t; printf("Masukkan tarikh: "); scanf("%d%d%d", &t.hari, &t.bulan, &t.tahun); return t;}void outputHasil(TARIKH t, int bilHari) { printf("%d/%d/%d adalah hari ke-%d dalam tahun %d\n", t.hari, t.bulan, t.tahun, bilHari, t.tahun);}

2hari bulan tahun4 2004t

Contoh:

Masukkan tarikh: 4 2 2004_

{ 4, 2, 2004 }

70

#include <stdio.h>typedef struct tarikh { int hari, bulan, tahun;} TARIKH;

TARIKH bacaTarikh();int kiraHari(TARIKH);void outputHasil(TARIKH, int);int jumHari(int, int);

int main() { TARIKH tkh; int bil; tkh = bacaTarikh(); bil = kiraHari(tkh); outputHasil(tkh, bil);}

2hari bulan tahun4 2004tkh

bil ???

Contoh:

Masukkan tarikh: 4 2 2004_

71

#include <stdio.h>typedef struct tarikh { int hari, bulan, tahun;} TARIKH;

TARIKH bacaTarikh();int kiraHari(TARIKH);void outputHasil(TARIKH, int);int jumHari(int, int);

int main() { TARIKH tkh; int bil; tkh = bacaTarikh(); bil = kiraHari(tkh); outputHasil(tkh, bil);}

2hari bulan tahun4 2004tkh

bil ???

Contoh:

Masukkan tarikh: 4 2 2004_

72

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }}

2hari bulan tahun4 2004t

Contoh:

Masukkan tarikh: 4 2 2004_

73

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }}

2hari bulan tahun4 2004t

jumlah ???

bulan ???

Contoh:

Masukkan tarikh: 4 2 2004_

74

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }}

2hari bulan tahun4 2004t

jumlah 0

bulan ???

Contoh:

Masukkan tarikh: 4 2 2004_

75

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }}

2hari bulan tahun4 2004t

jumlah 0

bulan ???

Contoh:

Masukkan tarikh: 4 2 2004_

76

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }}

2hari bulan tahun4 2004t

jumlah 0

bulan 1

Contoh:

Masukkan tarikh: 4 2 2004_

77

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }}

2hari bulan tahun4 2004t

jumlah 0

bulan 1

Contoh:

Masukkan tarikh: 4 2 2004_

78

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }}

2hari bulan tahun4 2004t

jumlah 0

bulan 1

Contoh:

Masukkan tarikh: 4 2 2004_

79

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }}

2hari bulan tahun4 2004t

jumlah 0

bulan 1

Contoh:

Masukkan tarikh: 4 2 2004_

bulan 1

tahun 2004

80

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }} Contoh:

Masukkan tarikh: 4 2 2004_

bulan 1

tahun 2004

81

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }} Contoh:

Masukkan tarikh: 4 2 2004_

bulan 1

tahun 2004

82

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }} Contoh:

Masukkan tarikh: 4 2 2004_

bulan 1

tahun 200431

83

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }} Contoh:

Masukkan tarikh: 4 2 2004_

2hari bulan tahun4 2004t

jumlah 31

bulan 1

84

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }} Contoh:

Masukkan tarikh: 4 2 2004_

2hari bulan tahun4 2004t

jumlah 31

bulan 2

85

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }} Contoh:

Masukkan tarikh: 4 2 2004_

2hari bulan tahun4 2004t

jumlah 31

bulan 2

86

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }} Contoh:

Masukkan tarikh: 4 2 2004_

2hari bulan tahun4 2004t

jumlah 35

bulan 2

87

int kiraHari(TARIKH t) { int jumlah, bulan; jumlah = 0; for (bulan=1; bulan < t.bulan; bulan++) jumlah = jumlah + jumHari(bulan, t.tahun); jumlah = jumlah + t.hari; return jumlah; }int jumHari(int bulan, int tahun) { switch (bulan) { case 2: if (tahun % 4 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; }} Contoh:

Masukkan tarikh: 4 2 2004_

2hari bulan tahun4 2004t

jumlah 35

bulan 235

88

#include <stdio.h>typedef struct tarikh { int hari, bulan, tahun;} TARIKH;

TARIKH bacaTarikh();int kiraHari(TARIKH);void outputHasil(TARIKH, int);int jumHari(int, int);

int main() { TARIKH tkh; int bil; tkh = bacaTarikh(); bil = kiraHari(tkh); outputHasil(tkh, bil);}

2hari bulan tahun4 2004tkh

bil 35

Contoh:

Masukkan tarikh: 4 2 2004_

89

#include <stdio.h>typedef struct tarikh { int hari, bulan, tahun;} TARIKH;

TARIKH bacaTarikh();int kiraHari(TARIKH);void outputHasil(TARIKH, int);int jumHari(int, int);

int main() { TARIKH tkh; int bil; tkh = bacaTarikh(); bil = kiraHari(tkh); outputHasil(tkh, bil);}

2hari bulan tahun4 2004tkh

bil 35

Contoh:

Masukkan tarikh: 4 2 2004_

90

TARIKH bacaTarikh() { struct tarikh t; printf("Masukkan tarikh: "); scanf("%d%d%d", &t.hari, &t.bulan, &t.tahun); return t;}void outputHasil(TARIKH t, int bilHari) { printf("%d/%d/%d adalah hari ke-%d dalam tahun %d\n", t.hari, t.bulan, t.tahun, bilHari, t.tahun);}

2hari bulan tahun4 2004t

bilHari 35

Contoh:

Masukkan tarikh: 4 2 2004_

91

TARIKH bacaTarikh() { struct tarikh t; printf("Masukkan tarikh: "); scanf("%d%d%d", &t.hari, &t.bulan, &t.tahun); return t;}void outputHasil(TARIKH t, int bilHari) { printf("%d/%d/%d adalah hari ke-%d dalam tahun %d\n", t.hari, t.bulan, t.tahun, bilHari, t.tahun);}

2hari bulan tahun4 2004t

bilHari 35

Contoh:

Masukkan tarikh: 4 2 20044/2/2004 adalah hari ke-35 dalam tahun 2004_

92

TARIKH bacaTarikh() { struct tarikh t; printf("Masukkan tarikh: "); scanf("%d%d%d", &t.hari, &t.bulan, &t.tahun); return t;}void outputHasil(TARIKH t, int bilHari) { printf("%d/%d/%d adalah hari ke-%d dalam tahun %d\n", t.hari, t.bulan, t.tahun, bilHari, t.tahun);}

2hari bulan tahun4 2004t

bilHari 35

Contoh:

Masukkan tarikh: 4 2 20044/2/2004 adalah hari ke-35 dalam tahun 2004_

93

#include <stdio.h>typedef struct tarikh { int hari, bulan, tahun;} TARIKH;

TARIKH bacaTarikh();int kiraHari(TARIKH);void outputHasil(TARIKH, int);int jumHari(int, int);

int main() { TARIKH tkh; int bil; tkh = bacaTarikh(); bil = kiraHari(tkh); outputHasil(tkh, bil);}

2hari bulan tahun4 2004tkh

bil 35

Contoh:

Masukkan tarikh: 4 2 20044/2/2004 adalah hari ke-35 dalam tahun 2004_

94

#include <stdio.h>typedef struct tarikh { int hari, bulan, tahun;} TARIKH;

TARIKH bacaTarikh();int kiraHari(TARIKH);void outputHasil(TARIKH, int);int jumHari(int, int);

int main() { TARIKH tkh; int bil; tkh = bacaTarikh(); bil = kiraHari(tkh); outputHasil(tkh, bil);}

2hari bulan tahun4 2004tkh

bil 35

Contoh:

Masukkan tarikh: 4 2 20044/2/2004 adalah hari ke-35 dalam tahun 2004_