30
COP3502 Programming Fundamentals for CIS Majors 1 Instructor: Parisa Rashidi

COP3502 Programming Fundamentals for CIS Majors 1

  • Upload
    ozzy

  • View
    38

  • Download
    0

Embed Size (px)

DESCRIPTION

COP3502 Programming Fundamentals for CIS Majors 1. Instructor: Parisa Rashidi. Chapter 6 Array Single dimensional array Search & sort. Chapter 7 Multi-dimensional arrays Declare Create Access Problem solving using two dimensional array Sudoku …. Multi-Dimensional Arrays. - PowerPoint PPT Presentation

Citation preview

Page 1: COP3502         Programming  Fundamentals for CIS Majors 1

COP3502 Programming Fundamentals for CIS Majors 1

Instructor: Parisa Rashidi

Page 2: COP3502         Programming  Fundamentals for CIS Majors 1

Chapter 6 Array

Single dimensional array Search & sort

Last Week

Page 3: COP3502         Programming  Fundamentals for CIS Majors 1

Chapter 7 Multi-dimensional arrays

DeclareCreateAccess

Problem solving using two dimensional arraySudoku…

Objectives

Page 4: COP3502         Programming  Fundamentals for CIS Majors 1

Multi-Dimensional Arrays

Page 5: COP3502         Programming  Fundamentals for CIS Majors 1

We want to store the distances between 20 different cities. How?

Motivation

Chicago

Boston

New York

Atlanta

Miami

Dallas

Houston

Distance Table (in miles)

Chicago Boston New York Atlanta Miami Dallas Houston

0 983 787 714 1375 967 1087

983 0 214 1102 1763 1723 1842

787 214 0 888 1549 1548 1627

714 1102 888 0 661 781 810

1375 1763 1549 661 0 1426 1187

967 1723 1548 781 1426 0 239

1087 1842 1627 810 1187 239 0

1723 1548 781 1426 0 239

Page 6: COP3502         Programming  Fundamentals for CIS Majors 1

We want to store the position on a checkers’ board. How?

Motivation

Page 7: COP3502         Programming  Fundamentals for CIS Majors 1

Declaring and creating 2-dimensional array

Example

2D Array

// Declare array refVar of type dataTypedataType[][] refVar;

// Create arrayrefVar = new dataType[size1][size2];

// Declare array double[][] myTable;

// Create arraymyTable = new double[10][10];

Page 8: COP3502         Programming  Fundamentals for CIS Majors 1

Declaring and creating 2-dimensional array

2D Array

// Combine declaration and creation in one // single statementdouble[][] myTable = new double[10][10];

// Alternative syntaxdouble myTable[][] = new double[10][10];

Page 9: COP3502         Programming  Fundamentals for CIS Majors 1

2-dimensional array illustration Declaring and creating an array

2D Array

0 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0

0 1 2 3 4

01234

int[][] matrix = new int[5][5]

Page 10: COP3502         Programming  Fundamentals for CIS Majors 1

We want to store the position on a checkers’ board.

2D Array

final int BLANK = 0; // location empty final int WHITE = 1; // white piece final int RED = 2; // blue pieceint[][] checkerBoard= new int[8][8]

Page 11: COP3502         Programming  Fundamentals for CIS Majors 1

We want to store the position on a chess board.

2D Array

String[] pieces = {“king”, “queen”, “rook”, “knight”, “bishop”, “pawn”}; int[][] chessBoard= new int[8][8]

Page 12: COP3502         Programming  Fundamentals for CIS Majors 1

2-dimensional array illustration Accessing elements

2D Array

0 0 0 0 00 0 0 0 00 7 0 0 00 0 0 0 00 0 0 0 0

0 1 2 3 4

01234

matrix[2][1] =7;

Page 13: COP3502         Programming  Fundamentals for CIS Majors 1

Internally, java stores a 2D array as “an array of arrays”

2D Array

int [][] nums = new int[5][4];

nums

Page 14: COP3502         Programming  Fundamentals for CIS Majors 1

What is nums.length? 5

What is nums[0].length? 4

2D Array

int [][] nums = new int[5][4];

nums

Page 15: COP3502         Programming  Fundamentals for CIS Majors 1

2-dimensional array illustration Initialization

2D Array

1 2 310 3 010 7 80

0 1 2

012

int[][] matrix2 = { {1, 2, 3}, {10, 3, 0}, {10, 7, 80}};

matrix2

1 2 3

10 3 0

10 7 80

Page 16: COP3502         Programming  Fundamentals for CIS Majors 1

Rows might have different lengths

Ragged Array

int[][] matrix = { {1, 2, 3, 4, 5}, {2, 3, 4, 5}, {3, 4, 5}, {4, 5}, {5}};

matrix

1 2 3 4 5

2 3 4 5

3 4 5

4 5

5

Page 17: COP3502         Programming  Fundamentals for CIS Majors 1

Loops and 2D arrays

Loops & 2D Array

for (int row = 0; row < matrix.length; row++) { for (int column = 0; column < matrix[row].length; column+

+) { // use matrix[row][column] }}

1 2 310 3 010 7 80

Page 18: COP3502         Programming  Fundamentals for CIS Majors 1

Initializing 2D array with input values

Loops & 2D Array

java.util.Scanner input = new Scanner(System.in);System.out.println("Enter " + matrix.length + " rows

and " + matrix[0].length + " columns: ");

for (int row = 0; row < matrix.length; row++) { for (int column = 0; column < matrix[row].length;

column++) { matrix[row][column] = input.nextInt(); }}

Page 19: COP3502         Programming  Fundamentals for CIS Majors 1

Initializing 2D arrays with random values

Loops & 2D Array

for (int row = 0; row < matrix.length; row++) { for (int column = 0; column < matrix[row].length;

column++) { matrix[row][column] = (int)(Math.random() * 100); }}

Page 20: COP3502         Programming  Fundamentals for CIS Majors 1

Printing 2D arrays

Loops & 2D Array

for (int row = 0; row < matrix.length; row++) { for (int column = 0; column < matrix[row].length;

column++) { System.out.print(matrix[row][column] + " "); }

System.out.println();}

Page 21: COP3502         Programming  Fundamentals for CIS Majors 1

Summing all elements of a 2D array

Loops & 2D Array

int total = 0;for (int row = 0; row < matrix.length; row++) { for (int column = 0; column <

matrix[row].length; column++) { total += matrix[row][column]; }}

Page 22: COP3502         Programming  Fundamentals for CIS Majors 1

Summing elements of a 2D array by each column

Loops & 2D Array

for (int column = 0; column < matrix[0].length; column++) {

int total = 0; for (int row = 0; row < matrix.length; row++) total += matrix[row][column]; System.out.println("Sum for column " + column + " is "

+ total);}

Page 23: COP3502         Programming  Fundamentals for CIS Majors 1

Random shuffling of a 2D array

Loops & 2D Array

for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { int i1 = (int)(Math.random() * matrix.length); int j1 = (int)(Math.random() *

matrix[i].length); // Swap matrix[i][j] with matrix[i1][j1] int temp = matrix[i][j]; matrix[i][j] = matrix[i1][j1]; matrix[i1][j1] = temp; }}

Page 24: COP3502         Programming  Fundamentals for CIS Majors 1

Passing 2D array to a method

Program

PassTwoDimensionalArray Run

Page 25: COP3502         Programming  Fundamentals for CIS Majors 1

Write a program that grades multiple-choice test.

Program

A B A C C D E E A D D B A B C A E E A D E D D A C B E E A D C B A E D C E E A D A B D C C D E E A D B B E C C D E E A D B B A C C D E E A D E B E C C D E E A D

0 1 2 3 4 5 6 7 8 9

Student 0 Student 1 Student 2 Student 3 Student 4 Student 5 Student 6 Student 7

Students’ Answers to the Questions:

D B D C C D A E A D

0 1 2 3 4 5 6 7 8 9

Key

Key to the Questions: GradeExam

Run

Page 26: COP3502         Programming  Fundamentals for CIS Majors 1

Finding two points nearest to each other

Program

FindNearestPoints Run

(1, 1)

(-1, -1)

(-1, 3)

(2, 0.5)

(3, 3)

(4, 2)

(2, -1)

(4, -0.5)

-1 3 -1 -1 1 1 2 0.5 2 -1 3 3 4 2 4 -0.5

x y 0 1 2 3 4 5 6 7

Page 27: COP3502         Programming  Fundamentals for CIS Majors 1

SudokuEvery column contains the numbers 1

to 9Every row contains the numbers 1 to 9Every 3×3 box contains the numbers

1 to 9

Program

5 3 7 6 1 9 5 9 8 6 8 6 3

4 8 3 1

7 2 6 6

4 1 9 5

8 7 9

5 3 4 6 7 8 9 1 2 6 7 2 1 9 5 3 4 8 1 9 8 3 4 2 5 6 7

8 5 9 7 6 1 4 2 3

4 2 6 8 5 3 7 9 1

7 1 3 9 2 4 8 5 6 9 6 1 5 3 7 2 8 4

2 8 7 4 1 9 6 3 5

3 4 5 2 8 6 1 7 9

Page 28: COP3502         Programming  Fundamentals for CIS Majors 1

Write a program to checking a Sudoku solution

Program

RunCheckSudokuSolution

Page 29: COP3502         Programming  Fundamentals for CIS Majors 1

In Java, you can create n-dimensional arrays for any integer n. Generalization of 2D case Example

Multi-dimensional array

 double[][][] scores = new double[10][5][2];

Page 30: COP3502         Programming  Fundamentals for CIS Majors 1

Write a program that calculates the total score for students in a class. Suppose the scores are stored in a three-dimensional array named scores. The first index in scores refers to a student, the second refers to an exam, and the third refers to the part of the exam. Suppose there are 7 students, 5 exams, and each exam has two parts--the multiple-choice part and the programming part. So, scores[i][j][0] represents the score on the multiple-choice part for the i’s student on the j’s exam. Your program displays the total score for each student.

Program

TotalScore