Elemen-elemen
dari suatu array juga dapat berbentuk sebuah struktur. Misalnya array yang dipakai untuk menyimpan
sejumlah data siswa (struct student). Array struktur berdimensi satu ini membentuk
suatu tabel, dengan barisnya menunjukkan elemen dari array-nya dan kolomnya
menunjukkan elemen dari struktur. Dalam
hal ini maka deklarasi yang dibutuhkan adalah sebagai berikut :
#define MAKS 20
.
. .
struct date { /* definisi dari tipe date */
int
month; int day;
int
year;
};
struct student { /* definisi dari tipe
student */
char
name[30]; struct date birthday;
};
/* deklarasi dari variabel array mhs
*/
struct student data_mhs[MAKS];
|
yang
artinya, mendeklarasikan array data_mhs
yang memiliki elemen yang bertipe struct student sebanyak MAKS. Setelah array data_mhs dideklarasikan, maka ruang yang disediakan ditunjukkan
dalam gambar di bawah ini.
Elemen-elemen
dari array stuktur tersebut bisa diakses dengan cara sebagai berikut :
for (i=0; i<MAKS; i++)
{
printf("Name :
");
fgets(data_mhs[i].name,sizeof data_mhs[i].name,stdin); printf("Birthday (mm-dd-yyyy):
");
scanf("%d-%d-%d", &data_mhs[i].birthday.month,
&data_mhs[i].birthday.day,
&data_mhs[i].birthday.year);
printf("\n");
/* hapus sisa data dalam penampung keyboard */
fflush(stdin);
};
|
Selengkapnya
perhatikan contoh program di bawah ini.
/* File program : student2.c
Array struktur untuk menyimpan
data-data student */
#include <stdio.h>
#define MAKS 20
struct date { //definisi global dr tipe date int month;
int day; int year;
};
struct student { //definisi global dr tipe student char name[30]; struct date birthday;
};
//deklarasi global dari variabel
student struct student data_mhs[MAKS];
main() {
int i=0, sudah_benar, jml; char lagi;
//memasukkan data do
{
printf("Name :
");
fgets(data_mhs[i].name,sizeof data_mhs[i].name,stdin);
printf("Birthday (mm-dd-yyyy): "); scanf("%d-%d-%d",
&data_mhs[i].birthday.month,
&data_mhs[i].birthday.day,
&data_mhs[i].birthday.year);
printf("\n");
i++;
printf("Mau memasukkan data lagi [Y/T] ? "); do
{
lagi = getchar( ); //baca
tombol sudah_benar = (lagi == 'Y')
|| (lagi== 'y')||
(lagi == 'T') || (lagi == 't');
} while(! sudah_benar);
//hapus sisa data dalam penampung keyboard
fflush(stdin);
printf("\n");
} while(lagi == 'Y' || lagi == 'y');
jml = i;
//menampilkan data printf("DATA SISWA\n");
for (i=0; i<jml; i++)
{
printf("%d. Name :
%s", i+1, data_mhs[i].name);
printf(" Birthday :
%d-%d-%d\n\n", data_mhs[i].birthday.month, data_mhs[i].birthday.day, data_mhs[i].birthday.year );
};
}
|
Contoh eksekusi :
Name : Salsabila
Birthday (mm-dd-yyyy) : 10-25-1979
Mau memasukkan data lagi [Y/T] ?
y
Name : Wildan
Birthday (mm-dd-yyyy) : 4-16-1974
Mau memasukkan data lagi [Y/T] ? t
DATA SISWA
1.
Name : Salsabila
Birthday : 10-25-1979
2.
Name : Wildan
Birthday : 4-16-1974
|
Di
samping cara pendeklarasian di atas, struktur juga dapat dideklarasikan dalam
berbagai bentuk yang lain, di antaranya sbb :
struct date { int month, day, year;
} today, tomorrow;
struct student {
char name[30]; struct date birthday;
} data_mhs[MAKS];
|
yaitu mendefinisikan struktur date, sekaligus mendeklarasikan variabel today dan tomorrow
dengan tipe struktur date. Demikian juga mendefinisikan struktur student, sekaligus mendeklarasikan
variabel array data_mhs sebanyak MAKS elemen dengan tipe struktur student. Atau cara lainnya
mendefinisikan, mendeklarasikan sekaligus menginisialisasi struktur, sebagai
berikut :
struct date { int month, day, year; } today = {5,14,2001};
|
0 komentar: