UAS 22-23 FAC1003 Programming II
--- Page 1 ---
UNIVERSITI MALAYA
UNIVERSITI MALAYA
PROGRAM ASASI SAINS FIZIKAL
FOUNDATION STUDIES IN PHYSICAL SCIENCES PROGRAMME
PUSAT ASASI SAINS
CENTRE FOR FOUNDATION STUDIES IN SCIENCE
SESI AKADEMIK 2022/2023 $\quad$ : $\quad$ SEMESTER 2
ACADEMIC SESSION 2022/2023 $\quad$ : $\quad$ SEMESTER 2
FAC1003 : $\quad$ PENGATURCARAAN II
$\quad\quad\quad\quad$ PROGRAMMING II
JUN 2023 $\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad$ MASA : 2 JAM
JUNE 2023 $\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad$ TIME : 2 HOURS
[University crest watermark: shield with tigers and banner reading "ILMU PUNCA KEMajuan" (partially obscured)]
ARAHAN KEPADA CALON:
INSTRUCTIONS TO CANDIDATES:
Kertas soalan ini dibahagikan kepada dua bahagian: Bahagian A dan Bahagian B. Jawab semua soalan.
This question paper is divided into two parts: Part A and Part B. Answer all questions.
(Kertas soalan ini mengandungi 6 soalan dalam 7 halaman yang bercetak)
(This question paper consists of 6 questions on 7 printed pages)
--- Page 2 ---
$\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad$ FAC1003
BAHAGIAN A / PART A
- $\quad$ (a) $\quad$ Pengisytiharan tatasusunan Pasum ialah:
Pasum[2][2][2]= {
{ {11, 22},
{13, 24}, },
{ {27, 18},
{29, 10}, },
};
$\quad\quad\quad\quad$ Bina segmen kod dalam C++ yang boleh mencari kuasa 3 pada setiap elemen dalam Pasum dan mencetak elemen baharu tatasusunan tersebut dalam matrik. $\quad$ (5 markah)
$\quad\quad$ (b) $\quad$ Pengisytiharan petunjuk diberi seperti di bawah:
int m=300, *Pm;
float fx= 300.600006, *Pfx;
double FX, *PFX=&FX;
$\quad\quad\quad\quad$ (i) $\quad\quad$ Bagaimana untuk menetapkan pemboleh ubah m dan fx kepada petunjuk Pm dan Pfx? $\quad\quad\quad\quad\quad\quad$ (1 markah)
$\quad\quad\quad\quad$ (ii) $\quad\quad$ Bagaimana untuk mencetak alamat memori m dan fx dengan petunjuk? $\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad$ (1 markah)
$\quad\quad\quad\quad$ (iii) $\quad$ Bagaimana untuk mencetak nilai m dan fx dengan menggunakan petunjuk? $\quad\quad\quad\quad\quad\quad\quad\quad\quad$ (1 markah)
$\quad\quad\quad\quad$ (iv) $\quad$ Bagaimana untuk menambah m ke fx dengan petunjuk kemudian tetapkan jawapan kepada int T? $\quad\quad$ (1 markah)
$\quad\quad\quad\quad$ (v) $\quad\quad$ Bagaimana untuk mendarab fx dengan $e^3$ dan menetapkan jawapan akan diberikan kepada FX (gunakan petunjuk untuk semua proses)? $\quad$ (1 markah)
$\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad$ 2/7
--- Page 3 --- FAC1003
(a) The Pasum array declaration is given as below:
Pasum[2][2][2]= {
{ {11, 22},
{13, 24}, },
{ {27, 18},
{29, 10}, },
};
Create a code segment in C++ that can find the power of 3 on each element in Pasum and print the new array elements in the matrix. (5 marks)
(b) Declaration of pointers are given as follows:
int m=300, *Pm;
float fx= 300.600006, *Pfx;
double FX; *PFX=&FX;
(i) How to assign variables m and fx to pointers Pm and Pfx? (1 mark)
(ii) How to print the memory address of m and fx with the pointers? (1 mark)
(iii) How to print the value of m and fx by the pointers? (1 mark)
(iv) How to add m to fx by pointer, then assign the answer to int T? (1 mark)
(v) How to multiply fx with $e^3$ and the answer will assign to FX (use pointers for all the processes)? (1 mark)
3/7
--- Page 4 --- FAC1003
-
(a) Lengkapkan program C++ di bawah dengan jawapan yang bersesuaian.
Complete the C++ program below with suitable answers.
#include<iostream>
using namespace std;
double (i)__________;
int main() {
double numbers[] = {7, 5, 6, 12, 35, 27};
double sum = 0;
int count = 0;
double average;
sum = SUM(numbers,&count);
// print the sum
cout<<"\nTheir Sum = "<<sum <<endl;
// find the average
average = sum / count;
cout <<"Their Average = " <<average <<endl;
return 0;
}
double SUM((ii)__________, (iii)__________)
{
int sum;
cout<<"The numbers are: ";
for (int i=0; i<6; i++) {
(iv)__________<<" ";
// calculate the sum
(v)__________;
// count the no. of array elements
++(*count);
}
return sum;
}
(5 markah/marks)
4/7
--- Page 5 --- FAC1003
BAHAGIAN B / PART B
3. Tulis sebuah program C++ menggunakan tatasusunan untuk mengira operasi $AB + 2C$ dimana,
$$A = \begin{bmatrix} a \ b \ c \end{bmatrix},\ B = \begin{bmatrix} a & b \end{bmatrix} \text{ dan } C = \begin{bmatrix} a & b \ c & d \ e & f \end{bmatrix},$$
Program anda mesti meminta pengguna memasukkan nilai untuk tatasusunan $A$, $B$ dan $C$. (15markah)
Write a C++ program using array to calculate $AB + 2C$ where,
$$A = \begin{bmatrix} a \ b \ c \end{bmatrix},\ B = \begin{bmatrix} a & b \end{bmatrix} \text{ and } C = \begin{bmatrix} a & b \ c & d \ e & f \end{bmatrix},$$
Your program must ask the user to input the values for array $A$, $B$ and $C$. (15 marks)
4. Tulis sebuah program C++ yang menggunakan penggunaan aplikasi fungsi untuk mengira rumus seperti di bawah:
$$d = \frac{|ah + bk + c|}{\sqrt{a^2 + b^2}}$$
Program ini mesti memasukkan dua fungsi bernama PowerTwo dan MultiplyTwo. PowerTwo ialah fungsi void yang mengira kuasa 2 ($a^2$ atau $b^2$), manakala MultiplyTwo ialah fungsi void untuk mengira pendaraban 2 pembolehubah ($ah$ atau $bk$). Proses mencari nilai $d$ berlaku (15 markah) dalam fungsi main().
5/7
--- Page 6 --- FAC1003
Write a program that uses the application of functions to compute the formula as below:
$$d = \frac{|ah + bk + c|}{\sqrt{a^2 + b^2}}$$
The program must include two functions named PowerTwo and MultiplyTwo. The PowerTwo is a void function which calculates the power of 2 ($a^2$ or $b^2$), while the MultiplyTwo is a void function to calculates multiplication of 2 variables ($ah$ or $bk$). The process of finding the value of $d$ is occurs in the main() function. (15 marks)
5. Tulis sebuah program C++ yang lengkap untuk menghitung nilai $p^y$ dengan menggunakan fungsi rekursif, dimana $p^y$ diberi sebagai:
Write a complete C++ program to compute the value of $p^y$ by using the recursive function, where $p^y$ is given as:
$$p^y = 1 + \ln y + \frac{\ln y^2}{2!} + \frac{\ln y^3}{3!} + \cdots + \frac{\ln y^n}{n!}$$ (15 markah /marks)
6/7
--- Page 7 ---
FAC1003
- Berdasarkan kepada Rajah 1, tulis sebuah program C++ lengkap untuk menukar posisi matriks $A$ yang bersaiz $2 \times 3$ menjadi matriks $B$ yang bersaiz $3 \times 2$. Program anda hendaklah meminta pengguna memasukkan elemen-elemen matriks $A$ di dalam fungsi
main(). Terapkan konsep tatasusunan 2 dimensi dan struktur pengulangan dalam program anda. Bina subprogram untuk menukar posisi matriks $A$ kepada matriks $B$. Subprogram anda hendaklah mencetak matriks $B$.
(15 markah)
[Box containing matrix transpose diagram labeled Rajah 1 / Figure 1]
Inside the box: Matrix $A$ on left: $$\begin{pmatrix} a_{00} & a_{01} & a_{02} \ a_{10} & a_{11} & a_{12} \end{pmatrix}$$
Arrow labeled "transpose" pointing right
Matrix $B$ on right: $$\begin{pmatrix} a_{00} & a_{10} \ a_{01} & a_{11} \ a_{02} & a_{12} \end{pmatrix}$$
Labels below: $A$ on left, $B$ on right
Rajah 1 / Figure 1
Based on Figure 1, write a complete C++ program to transpose a matrix $A$ of size $2 \times 3$ into matrix $B$ of size $3 \times 2$. The program should ask the user to input the elements of matrix $A$ in main() function. Apply the concept of 2-dimensional array and repetition control structure in your program. Create the subprogram to transpose matrix $A$ into matrix $B$. Your subprogram must print out the matrix $B$.
(15 marks)
********TAMAT/END********
7/7
Verbatim transcription via Kimi K2.6 vision subagents.