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

  1. $\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

  1. (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

  1. 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.