TwoDimensional Arrays Learning Objectives Introduce twodimensional arrays Be
Two-Dimensional Arrays
Learning Objectives • Introduce two-dimensional arrays • Be able to declare a two-dimensional array • Be able to analyze the values in each row of a 2 D array • Understand the implications of an array of arrays. • Describe the use of two-dimensional arrays to represent grids of information
Two-Dimensional Arrays • Declaration similar to one dimensional arrays • Need to specify both the number of rows and columns during allocation • Example: Type Two. DArray. Type = array[1. . 3, 1. . 3] of integer; Var two. DArray: Two. DArray. Type;
Program ticytacy; type board. Type = array[1. . 3, 1. . 3] of char; //Char is a single character Var board: board. Type; row, col: integer; begin for row : = 1 to 3 do for col: = 1 to 3 do board[row, col] : = '? '; for row : = 1 to 3 do board[row, row]: ='X'; for col: = 1 to 3 do board[col, 4 -col] : = 'O'; for row : = 1 to 3 do begin for col: = 1 to 3 do write(board[row, col]); writeln; end; readln; end.
Some 2 -D Array Math Calculating the sum for the first row for col: = 1 to 3 do sum: = sum + board[1, col]; Calculating the sum for the first column for row: = 1 to 3 do sum: = sum + board[row, 1]; Calculating the sum of all values for row: = 1 to 3 do for col: = 1 to 3 do sum: = sum + board[row, col];
More 2 -D array math Find the sum of the cells that surround the cell board[r, c]. for row: = r-1 to r+1 do for col: = c-1 to c+1 do sum: = sum + board[row, col]; sum: = sum – board[r, c];
Adding Another Dimension You can create arrays of higher dimension than 2. For example, if we were measuring the temperature in a rectangular volume. Type temperature. Array. Type = array[1. . 3, 1. . 3] of integer; var temperatures: temperature. Array. Type;
Program: Life • The universe is a two-dimensional grid of square cells, each of which is in one of two possible states, alive or dead, or "populated" or "unpopulated". • Every cell interacts with its eight neighbors, which are the cells that are horizontally, vertically, or diagonally adjacent. At each step in time, the following transitions occur: Ø Ø Any live cell with fewer than two live neighbors dies, as if caused by under population. Any live cell with two or three live neighbors lives on to the next generation. Any live cell with more than three live neighbors dies, as if by overpopulation. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction. 12 -8
Patterns - Any live cell with fewer than two live neighbors dies, as if caused by under population. - Any live cell with two or three live neighbors lives on to the next generation. - Any live cell with more than three live neighbors dies, as if by overpopulation. - Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction. 12 -9
Your application of Life • You determine the size of the universe • Fill your universe: Examples Ø Ø Hint: include a boundary around your world. Each cell has a 1 in N chance of being alive for the first generation. You select the value for N or have the user enter the value for N. Look up potential life patterns. • Run the game for several generations. Show the universe after each generation • Push: Break the program into procedures. Ø neighbors(), show. Universe(), populate() • Push: Determine a way to use records in your solution. • Push: Have your universe ‘wrap’ 12 -10
Magic Square • A magic square[1] is a n by n square grid (where n is the number of cells on each side) filled with distinct positive integers in the range {1, 2, . . . , n 2} such that each cell contains a different integer and the sum of the integers in each row, column and diagonal is equal 12 -11
Magic Square Program • Write a program that will take as input the values for each cell of a 3 x 3 potential magic square and determine if the square is magic. • Push: Write a program to generate 3 x 3 magic squares. Using an algorithm rather than just hard coding a found solution. • Push: Modify this to handle n x n magic squares. 12 -12
- Slides: 12