2d arrays and matricesdistance between two points imagine a point in a 2-dimentional space (each...
TRANSCRIPT
![Page 1: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/1.jpg)
2D Arrays and Matrices
1
![Page 2: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/2.jpg)
Imagine……
Class of 5 students
Each student is enrolled in 3 subjects CSE115, ENG101, EEE101CSE115, ENG101, EEE101
Store the marks of all students in all three subjects…
2
![Page 3: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/3.jpg)
Solution (kind of!)……
int m1[3] = { 78, 83, 82 };
int m2[3] = { 90, 88, 94 };
int m3[3] = { 71, 73, 78 }; int m3[3] = { 71, 73, 78 };
int m4[3] = { 97, 96, 95 };
int m5[3] = { 89, 93, 90 };
3
What if we have 40 students in the class?What if we have 40 students in the class?
![Page 4: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/4.jpg)
Efficient solution…
Store this information in a two-dimensional array
First dimension: which student 0, 1, 2, 3 or 4 First dimension: which student 0, 1, 2, 3 or 4
Second dimension: which subject 0, 1, or 2
4
![Page 5: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/5.jpg)
Pictorially
78 83 82
90 88 94
0
1
0 1 2
5
90 88 94
71 73 78
97 96 95
89 93 90
1
2
3
4
![Page 6: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/6.jpg)
In general a 2D-array
datatype array_name[row_size][column_size];
int matrix[3][4];
6Column 0 Column 1 Column 2 Column 3
Row 0
Row 1
Row 2
4 1 0 2
-1 2 4 3
0 -1 3 1
![Page 7: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/7.jpg)
In general a 2D-array
datatype array_name[row_size][column_size];
int matrix[3][4]; 4
1
7in memoryColumn 0 Column 1 Column 2 Column 3
Row 0
Row 1
Row 2
0
2
-1
2
4
3
0
-1
3
1
4 1 0 2
-1 2 4 3
0 -1 3 1
![Page 8: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/8.jpg)
Accessing Array Elements
int matrix[3][4];
matrix has 12 integer elements
matrix[0][0] element in first row, first column
8
matrix[0][0] element in first row, first column
matrix[2][3] element in last row, last column
Column 0 Column 1 Column 2 Column 3
Row 0
Row 1
Row 2
4 1 0 2
-1 2 4 3
0 -1 3 1
![Page 9: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/9.jpg)
Initialization (1st way)Initialize when you declare
int x[4][4] = { {2, 3, 7, 2},
{7, 4, 5, 9},
{5, 1, 6, -3},
9
{5, 1, 6, -3},
{2, 5, -1, 3}};
int x[][4] = { {2, 3, 7, 2},
{7, 4, 5, 9},
{5, 1, 6, -3},
{2, 5, -1, 3}};
![Page 10: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/10.jpg)
Initialization (2nd way)Using assignment operator
int i, j, matrix[3][4];
for (i=0; i<3; i++)
for (j=0; j<4; j++)
10
for (j=0; j<4; j++)
matrix[i][j] = i;j
0 1 2 3
0
1
2
i
0 0 0 0
1 1 1 1
2 2 2 2
j
0 1 2 3
0
1
2
i
0 1 2 3
0 1 2 3
0 1 2 3
matrix[i][j] = j;
![Page 11: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/11.jpg)
Exercise
Write the nested loop to initialize a 2D array as follow
int i, j, x[4][3];
11
0 1 2
1 2 3
2 3 4
3 4 5
int i, j, x[4][3];
for(i=0; i<4; i++)
for(j=0; j<3; j++)
x[i][j] = i+j;
![Page 12: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/12.jpg)
Initialization (3rd way)By taking input from user
int i, j, matrix[3][4];
for (i=0; i<3; i++)
12
for (i=0; i<3; i++)for (j=0; j<4; j++){
scanf("%d", &matrix[i][j]);}
![Page 13: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/13.jpg)
Showing content of a 2-Dim Array
for (i=0; i<4; i++){
0 1 2
1 2 3
13
for (i=0; i<4; i++){for (j=0; j<3; j++){
printf("%d ",m[i][j]);}
printf("\n");}
2 3 4
3 4 5
![Page 14: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/14.jpg)
Computations on 2D arrays
14
![Page 15: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/15.jpg)
Max in 2D
Find the maximum of int matrix[3][4]
1 20
0 1 2 3int max = matrix[0][0];
max = 0
15
0 1 20
-1 2 4 3
0 -1 3 1
0
1
2
int max = matrix[0][0];
for (i=0; i<3; i++)
for (j=0; j<4; j++){
if (matrix[i][j] > max){
max = matrix[i][j];
}
}
![Page 16: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/16.jpg)
Find a value in 2D
Find the number of times x appears in int matrix[3][4]
1 20
0 1 2 3int count = 0;
16
0 1 20
-1 2 4 3
0 -1 3 1
0
1
2
int count = 0;
for (i=0; i<3; i++)
for (j=0; j<4; j++){
if (matrix[i][j] == x)
count = count + 1;
}
![Page 17: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/17.jpg)
Matrix sum
Compute the addition of two matrices
3 0 33
0 1 2 3
1 20
0 1 2 3
3 -1 13
0 1 2 3
17
3 0 33
0 6 6 3
2 0 4 4
0
1
2
0 1 20
-1 2 4 3
0 -1 3 1
0
1
2
+
3 -1 13
1 4 2 0
2 1 1 3
0
1
2
=
![Page 18: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/18.jpg)
solution
int matrix1[3][4],
matrix2[3][4],
sum[3][4];
18
sum[3][4];
// initialize matrix1 and matrix2
for (i=0; i<3; i++)
for (j=0; j<4; j++)
sum[i][j]= matrix1[i][j]+matrix2[i][j];
![Page 19: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/19.jpg)
Exchange Two Rows
4 6 2
0 5 3 i
for (k=0; k<3; k++){t = a[i][k];a[i][k] = a[j][k];a[j][k] = t;
}
19
0 8 1
2 1 4
4 6 2
2 1 4
0 8 1
0 5 3
j
![Page 20: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/20.jpg)
Transpose
int N = 3;int a[N][N],b[N][N];/* Transfer values to the
transpose matrix. */for(i=0; i<N; i++){
for(j=0; j<N; j++) {
1 5 3
4 2 6
a
20
for(j=0; j<N; j++) {b[j][i] = a[i][j];
}}
4 2 6
7 9 8
b
1 4 7
5 2 9
3 6 8
![Page 21: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/21.jpg)
In-place Transpose (you can not use b array)
int N = 3,t;int a[N][N],b[N][N];/* Transfer values to the
transpose matrix. */for(i=0; i<N; i++){
for(j=i+1; j<N; j++) {
1 5 3
4 2 6
a
21
for(j=i+1; j<N; j++) {t = a[i][j];a[i][j] = a[j][i];a[j][i] = t;
}}
4 2 6
7 9 8
b
1 4 7
5 2 9
3 6 8
![Page 22: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/22.jpg)
Distance between two points
Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double p[3][2] (you can think that p[i][0] is the x value and p[i][1] is the y value of ith point).
We are now interested in finding the closest two points.For example, if p[3][2] = {{1,1},
{2,1},
1 2
1
2
3
22
{2,1},{1,3} };
Then we will say that points (1,1) and (2,1) are the closest two points. Write a program to do that:
![Page 23: 2D Arrays and MatricesDistance between two points Imagine a point in a 2-dimentional space (each point is represented by (x,y)) and we store 3 points in an array declared by double](https://reader033.vdocuments.us/reader033/viewer/2022053122/60a871f5a29e993cc20ccd19/html5/thumbnails/23.jpg)
double p[3][2] = {{1,1},{2,1},{1,3}};
double d1,d2,d3,dx,dy;dx = p[0][0]-p[1][0]; dy = p[0][1]-p[1][1];d1 = dx*dx + dy*dy;dx = p[0][0]-p[2][0];
23
dx = p[0][0]-p[2][0]; dy = p[0][1]-p[2][1];d2 = dx*dx + dy*dy;dx = p[1][0]-p[2][0]; dy = p[1][1]-p[2][1];d3 = dx*dx + dy*dy;min = (d1<d2)? d1: d2;min = (min < d3? Min:d3;