Presentation is loading. Please wait.

Presentation is loading. Please wait.

WEEK 6 Class Activities Lecturer’s slides.

Similar presentations


Presentation on theme: "WEEK 6 Class Activities Lecturer’s slides."— Presentation transcript:

1 http://www.comp.nus.edu.sg/~cs1010/ WEEK 6 Class Activities Lecturer’s slides

2 Week 6: Arrays  Going through examples in Unit #10 CS1010 (AY2015/6 Semester 1)Week6 - 2© NUS  Exercise #1: Sum to Random Position  Exercise #2: Matrix Multiplication  Exercise #3: Valid Path One-dimensional Arrays Multi-dimensional Arrays  Unit #11: Random Numbers  Unit #12: Using UNIX I/O Redirection Preparation

3 Random Numbers CS1010 (AY2015/6 Semester 1)Week6 - 3© NUS  We will go through Unit #11 Random Numbers.

4 Using UNIX I/O Redirection CS1010 (AY2015/6 Semester 1)Week6 - 4© NUS  We will go through Unit #12 UNIX I/O Redirection

5 One-dimensional Arrays CS1010 (AY2015/6 Semester 1)Week6 - 5© NUS  We will go through the examples in Unit #10.

6 Multi-dimensional Arrays CS1010 (AY2015/6 Semester 1)Week6 - 6© NUS  We will go through the examples in Unit #10.  Work out the following exercises.

7 Exercise #1: Sum to Random Position (1/4) CS1010 (AY2015/6 Semester 1)Week6 - 7© NUS  Write a program Week6_SumToRandomPos.c that reads in values (of type float) for a 2D array with at most 5 rows and 8 columns, generates a random position in the array and sums the elements from index [0][0] to that position, in row-major order.  Your program should contain the function sumPartial() to take in the array and a random position and return the sum of the elements up to that position.  What are the parameters of sumPartial()?  The incomplete program Week6_SumToRandomPos.c is given. Study the function scanArray() closely.

8 Exercise #1: Sum to Random Position (2/4) CS1010 (AY2015/6 Semester 1)Week6 - 8© NUS  The sum is printed in 2 decimal places.  To ease data input, create a file to store the input data, and use UNIX input redirection to redirect input from this file when you execute the program.  Sample run: $ Enter rows and columns: 3 4 $ Enter 12 values: 5.1 4.2 -6.3 12.4 7.5 8.6 -3.7 11.8 9.9 -20.0 17.1 10.2 Sum to position [1][2] = 27.80

9 Exercise #1: Sum to Random Position (3/4) CS1010 (AY2015/6 Semester 1)Week6 - 9© NUS #include #define MAX_ROWS 5 #define MAX_COLS 5 void scanArray(float [][MAX_COLS], int, int); int main(void) { float array[MAX_ROWS][MAX_COLS]; int rows, cols, upToRow, upToCol; printf("Enter rows and columns: "); scanf("%d %d", &rows, &cols); scanArray(array, rows, cols); srand(time(NULL)); upToRow = rand() % rows; upToCol = rand() & cols; // call sumPartial() function below printf("Sum to position [%d][%d] = %.2f\n"); // incomplete return 0; } Week6_SumToRandomPos.c

10 void scanArray(float arr[][MAX_COLS], int rows, int cols) { int r, c; printf("Enter %d values:\n", rows * cols); for (r=0; r < rows; r++) for (c=0; c < cols; c++) scanf("%f", &arr[r][c]); } // Sum elements from position [0][0] to a random // position [upToRow][upToCol]. // Fill in sumPartial() function below. Exercise #1: Sum to Random Position (4/4) CS1010 (AY2015/6 Semester 1)Week6 - 10© NUS Week6_SumToRandomPos.c

11 Exercise #2: Matrix Multiplication (1/3) CS1010 (AY2015/6 Semester 1)Week6 - 11© NUS  To multiply two matrices A and B, the number of columns in A must be the same as the number of rows in B.  The resulting matrix has same number of rows as A and number of columns as B  For example, multiplying a 2  4 matrix with a 4  3 matrix gives a 2  3 matrix. n  p matrix m  n matrix  = m  p matrix

12 Exercise #2: Matrix Multiplication (2/3) CS1010 (AY2015/6 Semester 1)Week6 - 12© NUS  To compute C = A  B, where A, B, C are matrices c i,j = (a i,1  b 1,j ) + (a i,2  b 2,j ) +... + (a i,n  b n,j ) c i,j is sum of terms produced by multiplying the elements of A’s row i with B’s column j.  Examples:  Complete the prodMatrix() function in Unit10_MatrixOps.c

13 Exercise #2: Matrix Multiplication (3/3) CS1010 (AY2015/6 Semester 1)Week6 - 13© NUS  Multiplying a 2  4 matrix with a 4  3 matrix: ?  = 2 3 1 0 3 2 2 1 3 2 2 2 1 3 ? ? ? ? ?1 2 3 1 0 3 15 13 17 13 11 6 row 0, col 0 row 0 col 0 6+2+3+4 row 1 =15 9+0+2+2=13 row 0, col 1 col 1 4+2 +9 +2 =17 row 1, col 0

14 Maze (1/2) CS1010 (AY2015/6 Semester 1)Week6 - 14© NUS  Let’s consider a maze that is represented by a two- dimensional 6  6 integer array.  The value of each array element is either 0 (representing a wall) or 1 (representing a cell).  The starting and exit points in the maze are specified by the cells maze[0][0] and maze[5][5] respectively.  A path is represented by a single-dimensional character array with four possible element values representing the move directions: ‘N’ (for north), ‘S’ (for south), ‘E’ (for east), and ‘W’ (for west). Each path is defined with respect to the starting cell maze[0][0].

15 Maze (2/2) CS1010 (AY2015/6 Semester 1)Week6 - 15© NUS  Example of a 6  6 maze 012345 0 1 2 3 4 5 Start Exit Cell Wall

16 Exercise #3: Valid Path CS1010 (AY2015/6 Semester 1)Week6 - 16© NUS  A path in a maze is defined to be valid if the path is within the maze and does not knock against any wall.  Examples:  Valid path: ‘E’, ‘E’, ‘S’, ‘N’, ‘E’, ‘E’, ‘S’  Invalid path: ‘S’, ‘S’, ‘W’  Invalid path: ‘S’, ‘S’, ‘S’, ‘E’  Write a function in isValid (int maze[][6], char path[]) that takes in a 6  6 maze and a path with at most 10 characters. It returns 1 if path is valid in maze, or returns 0 otherwise.  An incomplete program Week6_IsValid.c is given. It handles string input which is not covered yet. 012345 0 1 2 3 4 5

17 Things-To-Do CS1010 (AY2015/6 Semester 1)Week6 - 17 Revise Chapter 6: Numeric Arrays PE1 This Saturday! Refer to CS1010 website “PE” page for details Continue to do practice exercises on CodeCrunch © NUS

18 End of File CS1010 (AY2015/6 Semester 1)Week6 - 18© NUS


Download ppt "WEEK 6 Class Activities Lecturer’s slides."

Similar presentations


Ads by Google