1 / 18

Arrays, Random Numbers, and UNIX I/O in CS1010 Lectures

This week's class activities in CS1010 cover arrays, random numbers, and UNIX I/O. Topics include one-dimensional and multi-dimensional arrays, matrix multiplication, and finding a valid path in a maze. Exercises include summing to a random position, matrix multiplication, and validating a path.

Download Presentation

Arrays, Random Numbers, and UNIX I/O in CS1010 Lectures

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. CS1010 (AY2014/5 Semester 1) Random Numbers • We will go through Unit #11 Random Numbers.

  4. CS1010 (AY2014/5 Semester 1) Using UNIX I/O Redirection • We will go through Unit #12 UNIX I/O Redirection

  5. CS1010 (AY2014/5 Semester 1) One-dimensional Arrays • We will go through the examples in Unit #10.

  6. CS1010 (AY2014/5 Semester 1) Multi-dimensional Arrays • We will go through the examples in Unit #10. • Work out the following exercises.

  7. CS1010 (AY2014/5 Semester 1) Exercise #1: Sum to Random Position (1/4) • Write a program Week6_SumToRandomPos.cthat 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.cis given. Study the function scanArray() closely.

  8. CS1010 (AY2014/5 Semester 1) Exercise #1: Sum to Random Position (2/4) • 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.312.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. CS1010 (AY2014/5 Semester 1) Exercise #1: Sum to Random Position (3/4) #include <stdio.h> #include <stdlib.h> #include <time.h> #define MAX_ROWS5 #define MAX_COLS5 voidscanArray(float [][MAX_COLS], int, int); intmain(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 return0; } Week6_SumToRandomPos.c

  10. CS1010 (AY2014/5 Semester 1) Exercise #1: Sum to Random Position (4/4) Week6_SumToRandomPos.c voidscanArray(floatarr[][MAX_COLS], int rows, intcols) { 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.

  11. CS1010 (AY2014/5 Semester 1) Exercise #2: Matrix Multiplication (1/3) • 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. m n matrix n p matrix  = m p matrix

  12. CS1010 (AY2014/5 Semester 1) Exercise #2: Matrix Multiplication (2/3) • To compute C = A  B, where A, B, C are matrices ci,j = (ai,1 b1,j ) + (ai,2 b2,j ) + . . . + (ai,n bn,j) ci,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. CS1010 (AY2014/5 Semester 1) Exercise #2: Matrix Multiplication (3/3) • Multiplying a 2  4 matrix with a 4  3 matrix: col 0 col 1 row 0, col 0 row 0, col 1 3 2 1 row 1 row 0 2 2 3 ? ? 17 ? 11 15  = 1 3 0 ? ? ? 13 13 6 2 1 3 row 1, col 0 2 1 3 2 6 + 2 + 3 + 4 = 15 3 0 2 1 4 + 2 + 2 + 9 = 17 9 + 0 + 2 + 2 = 13

  14. CS1010 (AY2014/5 Semester 1) Maze (1/2) • 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. CS1010 (AY2014/5 Semester 1) Maze (2/2) • Example of a 6  6 maze Start 0 1 2 3 4 5 0 1 2 3 4 5 Exit Cell Wall

  16. CS1010 (AY2014/5 Semester 1) Exercise #3: Valid Path • 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 functioninisValid (int maze[][6], char path[])that takes in a 6  6 mazeand a pathwith at most 10 characters. It returns 1 if path is valid in maze, or returns 0 otherwise. • An incomplete program Week6_IsValid.cis given. It handles string input which is not covered yet. 0 1 2 3 4 5 0 1 2 3 4 5

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

  18. CS1010 (AY2014/5 Semester 1) End of File

More Related