Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.