February 11, 2005

CBDS2103 - struktur data - contoh jawapan kepada latihan dalam buku modul (UNIT 1)

CBDS2103 - struktur data - contoh jawapan kepada latihan dalam buku modul

perhatian:
1 jangan terus salin jawapan; cuba buat sendiri dahulu soalan latihan tersebut sebelum melihat kepada jawapan.
2 tidak semua latihan saya sempat cari jawapannya
3 jawapan ini hanyalah untuk pelajar di bawah tutoran saya sahaja
4 walaupun usaha sebaik mungkin telah diambil untuk memastikan jawapan adalah tepat, tidak ada jaminan semua
jawapan adalah semestinya tepat

latihan 1.1
(a) float nombor[30];
(b) char aksara[126];

latihan 1.2
(a) int ganjil[12]={1,3,5,7,11,13,15,17,19,21,23};
(b) float pemalar[6]={0.02,-0.45,5.77,-2.55,7.50,-5.00};

latihan 1.3
1(a) abc[0]=0; abc[1]=2;abc[2]=4;...............
1(b) c[0]=2.0;c[1]=0.5;c[2]=1.2;........
1(c) xyz[0]=5;xyz[1]=10;zyz[2]=0;..........

2(a) M[4]=2*2*3=12
(b) R[3]=R[1]*5=(R[0]*8)*5=8*8*5=320

lat 1.4 [not done yet]

lat 1.5 [not done yet]

lat 1.6 [not done yet]

lat 1.7 [not done yet]

lat 2.1
(a) aksara - sah
(b) rentetan - sah
(c) tak sah - takda tanda kutip
(d) tak sah - tanda kutip rentetan mesti berganda
(e) tak sah - bukan aksara 'next line' yang sah
(f) tak sah - tak ada tanda kutip penutup

lat 2.2
1 (a) status[0]='B'; status[1]='E';........
(b) status[0]='B';status[1]='E';.........status[6]='\0';
(c) status[0]='P';status[1]='A';.....status[5]='\0';
2(a) char arah[]="UTARA";
(b) char ipt[6]={'O','U','M'};

lat 2.3
P0n2a4u6c8

lat 2.4
(a) 75
(b) 49

lat 2.5 [not done yet]

lat 2.6 [not done yet]

lat 2.7 [not done yet]

lat 3.1
1 - boleh gabungkan jenis data yg berbeza
2 - no matrik - integer, nama - rentetan 30 aksara, kursus - rentetan 30 aksara

lat 3.2
1
struct tarikh {
int hari;
int bulan;
int tahun;
} tarikhSaya;

2 (a) perlu tambah noktah bertindih pada hujung aturcara
(b) perlu tambah perkataan struct pada kiri baris aturcara: struct orang orang;

lat 3.3
1(a) pelanggan.nama;
(b) pelanggan.nomPelanggan;
(c) pelanggan.nomTelefon;

2(a) strcpy(pelanggan.nama,"Aisyah");
(b) pelanggan.nomPelanggan=1226;
(c) strcpy(pelanggan.nomTelefon,"011-333011");


lat 3.4
(a)
#include
#define BIL 50
struct BUKU {
char tajuk[50];
int tahun;
float harga;
} buku[50];

void bacaMaklumat(struct BUKU[]);

void main() {
bacaMaklumat(buku);
}

void bacaMaklumat(struct BUKU b[]) {
FILE *fail;
int i;
fail = fopen("data.dat","r");
for (i=0; i
#define BIL 50
struct BUKU {
char tajuk[50];
int tahun;
float harga;
} buku[50];

void bacaMaklumat(struct BUKU[]);
void cetakMaklumat(struct BUKU[]);

void main() {
bacaMaklumat(buku);
cetakMaklumat(buku);
}

void bacaMaklumat(struct BUKU buku[]) {
FILE *fail;
int i;
fail = fopen("data.dat","r");
for (i=0; i fgets(buku[i].tajuk,50,fail);
fscanf(fail,"%d",&(buku[i].tahun));
fscanf(fail,"%f\n",&(buku[i].harga));
}
fclose(fail);
}

void cetakMaklumat(struct BUKU buku[]) {
int i;
for (i=0; i printf("%s%d %.2f\n", buku[i].tajuk, buku[i].tahun, buku[i].harga);
}
}

2 - not yet done

lat 4.1
1(a) penunjuk p kepada pembolehubah berjenis int
(b) penunjuk q kepada pembolehubah berjenis float
(c) pembolehubah a diisytiharkan sebagai jenis int
penunjuk p diumpukkan nilai alamat a

2(a) 10 10
(b) 17.500000

lat 4.2
nota: sebelum aturcara ini dilaksanakan pembetulan perlu dilakukan kepada kedua-dua pernyataan printf, di mana
mereka mestilah dalam bentuk ini: printf("a=%d, b=%d\n",a,b);
dan bukannya printf("a=%.2f, b=%.2f\n",a,b);
(a) a=50, b=4
(b)
a=10 b=5
a=50 b=4

lat 4.3
1 yg tidak sah adalah pernyataan t=p oleh kerana nama tatasusunan (t) adalah suatu penuding kepada unsur pertama tatasusunan.
2
[saya menganggap p=n]
p+3 adalah alamat lokasi ingatan (-42) manakala *(p+3) adalah nilai dalam tatasusunan yang ke 1+3=4 iaitu 40

lat 4.4
segmen aturcara sepatutnya ditulis seperti berikut:
int *n; int bil;
n=(int *) malloc (bil *sizeof(int));

soalan tutorial - belum dibuat