UNIVERSITI SAINS MALAYSIA
Second Semester Examination 2014/2015 Academic Session
June 2015
MSG 383 – Data Structures for Computer Graphics [Struktur Data untuk Grafik Komputer]
Duration : 3 hours [Masa : 3 jam]
Please check that this examination paper consists of EIGHT pages of printed material before you begin the examination.
[Sila pastikan bahawa kertas peperiksaan ini mengandungi LAPAN muka surat yang bercetak sebelum anda memulakan peperiksaan ini.]
Instructions : Answer FIVE (5) questions.
[Arahan : Jawab LIMA (5) soalan.]
The question papers shall not be taken out from the examination hall and will be collected by invigilators.
Kertas soalan ini tidak boleh dibawa keluar daripada dewan peperiksaan dan akan dikutip oleh pengawas peperiksaan.
In the event of any discrepancies, the English version shall be used.
[Sekiranya terdapat sebarang percanggahan pada soalan peperiksaan, versi Bahasa Inggeris hendaklah diguna pakai].
…2/-
1. Mark the following statements as True (T) or False (F).
(a) The C++ identifiers ‘new’ and ‘delete’ are used for dynamic memory allocations.
(b) If C++ data type ‘int’ and ‘float’ occupy the same number of bytes in memory space, both ‘int’ and ‘float’ are equally efficient when they are used for arithmetic operations.
(c) In a recursive expression, one and only one base case is allowed.
(d) Binary tree sort is a sorting technique which performs an inorder traversal on a binary search tree.
(e) Bubble sort is more efficient than radix sort because bubble sort uses divide-and-conquer technique.
(f) Linked list is used when number of records is unknown during programming.
(g) Singly linked list has the advantage over doubly linked list because singly linked list processing does not cause memory leak.
(h) A binary tree must have two and only two children nodes, while the number of parent nodes are flexible.
(i) To represent negative numbers, we use an extra bit to indicate the negative sign and the sign bit is part of the value.
(j) Overflow never occurs when adding numbers with different signs.
[ 100 marks ]
1. Tandakan pernyataan-pernyataan berikut sebagai Benar (T) atau Salah (F).
(a) Pencam-pencam C++ ‘new’ dan ‘delete’ digunakan semasa peruntukkan ingatan dinamik.
(b) Jika jenis data C++ ‘int’ dan ‘float’ menguntuk bilangan bait yang sama dalam ruang ingatan, kedua-dua ‘int’ dan ‘float’ mempunyai kecekapan yang sama apabila digunakan untuk operasi aritmatik.
(c) Dalam suatu ungkapan rekursif, satu dan hanya satu kes asas dibenarkan.
(d) Isihan pepohon perduaan adalah suatu teknik pengisihan yang
(g) Senarai berpaut tunggal mempunyai kelebihan daripada senarai berpaut berganda kerana pemprosesan senarai berpaut tunggal tidak menyebabkan ingatan-bocor.
(h) Suatu pepohon perduaan mesti mempunyai dua dan hanya dua nod anak, manakala bilangan nod ibu adalah fleksibel.
(i) Untuk pernyataan nombor-nombor negatif, bit tambahan digunakan untuk menunjukkan tatatanda negatif dan tatatanda negatif itu juga sebahagian daripada nilai.
(j) Limpahan tidak berlaku jika penambahan nombor-nombor dari tatatanda berbeza.
[ 100 markah ]
2. Answer the following questions.
(a) Prove that if given n bit, the range of the integers that can be represented by:
(i) one’s complement notation is from to , and
(ii) two’s complement notation is from to .
Hint: find the upper and lower limits in the range for each notation by assuming n = 8.
(b) If m+n bit is used to represent a real number, where the first m bits represent mantissa and the last n bits represent exponents. Prove that,
(i) the range of the positive real numbers which can be represented by
two’s complement notation is from to
, and
(ii) the range of the negative real numbers which can be represented by
two’s complement notation is from to
.
[ 100 marks ]
…4/-
2. Jawab soalan-soalan di bawah.
(a) Buktikan bahawa jika diberi n bit, julat integer yang boleh diwakili oleh:
(i) tatatanda penggenap satu ialah dari ke , dan (ii) tatatanda penggenap dua ialah dari ke .
Petunjuk: cari batasan atas dan bawah dalam julat untuk setiap tatatanda dengan anggapan n = 8.
(b) Jika m+n bit digunakan untuk mewakili suatu nombor nyata, di mana m bit yang pertama mewakili mantisa dan n bit yang terakhir mewakili exponen.
Buktikan bahawa,
(i) julat untuk nombor-nombor nyata positif yang dapat diwakili oleh
tatatanda penggenap dua ialah dari ke
, dan
(ii) julat untuk nombor-nombor nyata negatif yang dapat diwakili oleh
tatatanda penggenap dua ialah dari ke
.
[ 100 markah ]
3. Figure 1 shows the number series of funcA(n). Write a recursive function in C++ to calculate nth term of the series when a value n is entered as user input, as in Figure 2.
[ 100 marks ]
3. Gambarajah 1 menunjukkan siri-siri nombor untuk funcA(n). Tuliskan suatu fungsi rekursif dalam C++ untuk mengira sebutan ke-n untuk siri tersebut apabila suatu nilai n dimasukkan sebagai input pengguna, seperti di Gambarajah 2.
[ 100 markah ]
n funcA(n)
1 2
2 4
3 7
4 11
5 16
6 22
: :
Figure 1.
Gambarajah 1.
#include <iostream>
using namespace std;
int funcA ( . . . ) {
:
funcA(…); // funcA calling itself }
void main() {
int an, n;
cout << "Enter value of n: ";
cin >> n;
an = funcA(n);
cout << an << ' ';
}
Figure 2.
Gambarajah 2.
…6/-
4. The following codes list the nodes in a binary tree in two different orders:
Preorder: A B C D E F G H I J K Inorder: C B E F D A H I J G K
(a) Draw the binary tree.
(b) Write the postorder traversal of the tree.
(c) Write recursive algorithms (in pseudocodes) for preorder, inorder and postorder traversals.
[ 100 marks ]
4. Kod-kod di bawah menyenaraikan nod-nod dalam suatu pepohon perduaan dalam dua tertib yang berlainan:
Tertib awalan: A B C D E F G H I J K Tertib sisipan: C B E F D A H I J G K
(a) Lukiskan pepohon perduaan tersebut.
(b) Tuliskan penyusuran tertib akhiran untuk pepohon tersebut.
(c) Tulis algoritma rekursif (dalam pseudokod) untuk penyusuran-penyusuran tertib awalan, sisipan dan akhiran.
[ 100 markah ]
5. Answer the following questions.
(a) Dragon curve is a fractal which can be generated by L-system with alphabet A={F, +, –} and the rules as specified below,
X → X+YF+
Y → –FX–Y
The axiom is S=FX and the angle is given as 90°. Assume the axiom is at the first step, write the strings for second and third steps, and draw its respective geometric interpretations.
(b) Given the 4th, 5th and 6th steps as follows.
By using Box-Counting Dimension method, let r be the side length of a fractal and N(rn) be the number of boxes with side length r, which are needed to cover the shape,
(i) find appropriate values of r and fill in the table below for n = {1, 2, 3, 4, 5},
n rn N(rn)
: : : :
(ii) find a pattern in the values of N(rn), and
(iii) use this pattern to compute the box-counting dimension, db, which is given as:
db = =
If the calculated dimension db is not an integer number, leave your answer in the simplest Log form, i.e. db = .
[ 100 marks ]
…8/-
5. Jawab soalan-soalan di bawah.
(a) Lengkungan naga ialah suatu fraktal yang dapat dijanakan oleh sistem-L dengan abjad A={F, +, –} dan peraturan-peraturan adalah seperti berikut, X → X+YF+
Y → –FX–Y
Aksiomnya ialah S=FX dan sudutnya diberi sebagai 90°. Anggapkan aksiom berada di langkah pertama, tuliskan rentetan untuk langkah- langkah kedua dan ketiga, dan selepas itu lukiskan terjemahan geometri masing-masing.
(b) Diberi langkah-langkah 4, 5 dan 6 seperti berikut.
Dengan menggunakan kaedah Dimensi Pengiraan-Kotak, biar r sebagai panjang tepi untuk suatu fraktal dan N(r) sebagai bilangan kotak, dengan panjang tepi r, yang dikehendaki untuk menutup bentuk tersebut,
(i) cari nilai-nilai yang sesuai untuk r dan isikan jadual di bawah untuk n = {1, 2, 3, 4, 5},
n rn N(rn)
: : : :
(ii) cari satu corak dalam nilai-nilai N(rn), dan
(iii) gunakan corak tersebut untuk mengira dimensi pengiraan-kotak, db, yang diberi sebagai:
db = =
Jika dimensi db yang dikira bukan suatu nombor integer, biarkan jawapan anda dalam bentuk Log teringkas, i.e. db = .