Лекц №11
Сэдэв: Олон хэмжээст массив
Хоёр хэмжээст
массив
Хоёр хэмжээст массив
Хоёр хэмжээст массивыг өөрөөр хэлбэл матриц, хүснэгт гэнэ. Матриц нь мөр
баганын элементүүдийн тоо ижилхэн бол квадрат матриц гэнэ. (жишээ нь
тоо эсвэл тэмдэг гэх мэт). Компьютерийн шинжлэх ухаанд матрицыг хоёр
хэмжээст массив хэлбэрээр илэрхийлдэг бөгөөд энэ нь бүх элементүүд нь
хоёр индекстэй массив юм.
Хоёр хэмжээст массивын бичигдэх хэлбэр:
массивын төрөл хувьсагчийн_нэр[хэмжээ][хэмжээ]
Хоёр хэмжээст массив
Мөр
Багана
Хоёр хэмжээст массив
Жишээлбэл: float x[3][4];
Энд x нь хоёр хэмжээст (2d) массив юм. Массив нь 12 элемент агуулах
боломжтой. Массивыг 3 мөр бүхий хүснэгт гэж бодож болох бөгөөд мөр бүр
нь 4 баганаас бүрддэг.
Багана
1
Багана
2
Багана
3
Багана
4
Мөр 1 x[0][0] x[0][1] x[0][2] x[0][3]
Мөр 2 x[1][0] x[1][1] x[1][2] x[1][3]
Мөр 3 x[2][0] x[2][1] x[2][2] x[2][3]
Хоёр хэмжээст массив
Хоёр хэмжээст массивыг зарлах
int c[2][3] = {{1, 3, 0}, {-1, 5, 9}};
int c[][3] = {{1, 3, 0}, {-1, 5, 9}};
int c[2][3] = {1, 3, 0, -1, 5, 9};
int a[3][4] = {
{0, 1, 2, 3} , /* 0-р мөр*/
{4, 5, 6, 7} , /* 1-р мөр */
{8, 9, 10, 11} /* 2-р мөр */};
int a[3][4] = { {0, 1, 2, 3},К4, 5, 6, 7},{8, 9, 10, 11}};
Хоёр хэмжээст массив
Жишээ №1: Хоёр хэмжээст массивын элементийн утгуудыг хэвлэх
#include <stdio.h>
int main () {
/* 5 мөр 2 багана бүхий массив*/
int a[5][2] = { {0,0}, {1,2}, {2,4}, {3,6},{4,8}};
int i, j; /* массивын элемент бүрийн утгыг хэвлэх*/
for ( i = 0; i < 5; i++ ) {
for ( j = 0; j < 2; j++ )
{ printf("a[%d][%d] = %dn", i,j, a[i][j] ); } } return 0;
}
Үр дүн:
a[0][0]: 0
a[0][1]: 0
a[1][0]: 1
a[1][1]: 2
a[2][0]: 2
a[2][1]: 4
a[3][0]: 3
a[3][1]: 6
a[4][0]: 4
a[4][1]: 8
Хоёр хэмжээст массив
Жишээ №2: Хоёр хэмжээст массивын элементүүдийг гараас оруулж хэвлэх
#include <stdio.h>
const int M = 2;
const int N = 2;
main(){
int i, j, A[M][N];
printf("Massiv garaas oruulah heseg n");
for ( i = 0; i < M; i ++ )
for ( j = 0; j < N; j ++ )
{printf ("A[%d][%d]=", i, j); scanf ("%d", & A[i][j]); }
printf("Massiv hevleh heseg n");
for ( i = 0; i < M; i ++ )
for ( j = 0; j < N; j ++ )
{printf ("A[%d][%d]=%d n",i,j, A[i][j]); }
return 0; }
Үр дүн:
Massiv garaas oruulah
heseg
A[0][0]=1
A[0][1]=2
A[1][0]=3
A[1][1]=4
Massiv hevleh heseg
A[0][0]=1
A[0][1]=2
A[1][0]=3
A[1][1]=4
Хоёр хэмжээст массив
Жишээ №3: Хоёр хэмжээст массивын элементүүдийн нийлбэрийг олох
1. #include <stdio.h>
2. int main() {
3. float a[2][2], b[2][2], result[2][2];
4. printf("Enter elements of 1st matrixn");
5. for (int i = 0; i < 2; ++i)
6. for (int j = 0; j < 2; ++j)
7. { printf("Enter a%d%d: ", i + 1, j + 1); scanf("%f", &a[i][j]); }
8. printf("Enter elements of 2nd matrixn");
9. for (int i = 0; i < 2; ++i)
10. for (int j = 0; j < 2; ++j)
Хоёр хэмжээст массив
11. { printf("Enter b%d%d: ", i + 1, j + 1); scanf("%f", &b[i][j]); }
12. for (int i = 0; i < 2; ++i)
13. for (int j = 0; j < 2; ++j)
14. { result[i][j] = a[i][j] + b[i][j]; }
15.printf("nSum Of Matrix:");
16. for (int i = 0; i < 2; ++i)
17. for (int j = 0; j < 2; ++j)
18. { printf("%.1ft", result[i][j]);
19. if (j == 1) printf("n"); }
20.return 0; }
Үр дүн:
Enter elements of 1st matrix
Enter a11: 2;
Enter a12: 0.5;
Enter a21: -1.1;
Enter a22: 2;
Enter elements of 2nd matrix
Enter b11: 0.2;
Enter b12: 0;
Enter b21: 0.23;
Enter b22: 23;
Sum Of Matrix:
2.2 0.5
-0.9 25.0
Хоёр хэмжээст массив
Жишээ №4: Хоёр хэмжээст массивын диагоналийн дагуух элементүүдтэй
ажиллах.
printf(“Гол диагональ:n");
for ( i = 0; i < N; i ++ )
printf ("%d ", A[i][i]);
printf("n Эсрэг диагональ :n");
for ( i = 0; i < N; i ++ )
printf ("%d ", A[i][N-1-i]);
Хоёр хэмжээст массив
Жишээ №5: Хоёр хэмжээст массивын гол диагоналиас доошхи
элементүүдтэй ажиллах
for ( i = 0; i < N; i ++ )
for ( j = 0; j < i; j ++ )
A[i][j] = 0;
Хоёр хэмжээст массив
Жишээ №6: Хоёр хэмжээст массивын эсрэг диагоналиас доошхи
элементүүдтэй ажиллах
for ( i = 0; i < N; i ++ )
for ( j = N-1-i; j < N; j ++ )
A[i][j] = 0;
Хоёр хэмжээст массив
Жишээ №7: Дурын хоёр хэмжээст массивын элементүүдтэй ажиллах
#include <stdio.h>
int main(){
int i, j, M, N;
printf("Massiv moriig oruul n"); scanf ("%d", &M);
printf("Massiv baganiig oruuln"); scanf ("%d", &N);
int A[M][N];
printf("Massiv garaas oruulah heseg n");
for ( i = 0; i < M; i ++ )
for ( j = 0; j < N; j ++ )
{printf ("A[%d][%d]=", i, j); scanf ("%d", &A[i][j]); }
printf("Massiv hevleh heseg n");
for ( i = 0; i < M; i ++ )
for ( j = 0; j < N; j ++ )
{printf ("A[%d][%d]=%d n",i,j, A[i][j]); }
return 0; }
Үр дүн:
Massiv moriig oruul
3
Massiv baganiig oruul
2
Massiv garaas oruulah heseg
A[0][0]=1
A[0][1]=2
A[1][0]=3
A[1][1]=4
A[2][0]=5
A[2][1]=6
Massiv hevleh heseg
A[0][0]=1
A[0][1]=2
A[1][0]=3
A[1][1]=4
A[2][0]=5
A[2][1]=6
Хоёр хэмжээст массив
Жишээ №8: Дурын хоёр хэмжээст массивын хамгийн их, бага элементийг
олох
#include<stdio.h>
int main()
{
int m, n, largest, smallest;
int largrowloc, largcolumnloc, smallrowloc, smallcolumnloc;
printf("Enter number of row and column: ");
scanf("%d %d",&m,&n);
int arr[m][n], i, j;
for(i=0;i<m;i++) {
for(j=0;j<n;j++) {
printf("Enter arr[%d][%d]: ",i,j); scanf("%d", &arr[i][j]); }
printf("n");
}
printf("Entered 2D Array:n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%dt",arr[i][j]);
}
printf("n");
}
largest=arr[0][0];
smallest=arr[0][0];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(largest<arr[i][j])
{
largest=arr[i][j];
largrowloc=i; //row location of largest element
Хоёр хэмжээст массив
printf("Entered 2D Array:n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%dt",arr[i][j]);
}
printf("n");
}
largest=arr[0][0];
smallest=arr[0][0];
Хоёр хэмжээст массив
largcolumnloc=j; //column location of largest element
}
if(smallest>arr[i][j])
{
smallest=arr[i][j];
smallrowloc=i; //row location of smallest element
smallcolumnloc=j; //column location of smallest element
}
}
}
printf("n");
printf("Largest element in array is %d in location arr[%d][%d]n", largest, largrowloc, largcolumnloc);
printf("Smallest element in array is %d in location arr[%d][%d]n", smallest, smallrowloc, smallcolumnloc);
return 0; }
Хоёр хэмжээст массив
Үр дүн:
Enter number of row and column: 3
3
Enter arr[0][0]: 1
Enter arr[0][1]: 2
Enter arr[0][2]: 3
Enter arr[1][0]: 4
Enter arr[1][1]: 5
Enter arr[1][2]: 6
Enter arr[2][0]: 7
Enter arr[2][1]: 8
Enter arr[2][2]: 9
Entered 2D Array:
1 2 3
4 5 6
7 8 9
Largest element in array is 9 in location arr[2][2]
Smallest element in array is 1 in location arr[0][37]
Олон хэмжээст
массив
Олон хэмжээст массив
Олон хэмжээст массивын бичигдэх хэлбэр:
массивын төрөл хувьсагчийн_нэр[хэмжээ1][хэмжээ2]… [хэмжээN]
Багана
1
Багана
2
Багана
3
Багана
4
Мөр 1 11 12 13 14
Мөр 2 21 22 23 24
Мөр 3 31 32 33 34
Массив 1
Багана
1
Багана
2
Багана
3
Багана
4
Мөр 1 11 12 13 14
Мөр 2 21 22 23 24
Мөр 3 31 32 33 34
Багана
1
Багана
2
Багана
3
Багана
4
Мөр 1 11 12 13 14
Мөр 2 21 22 23 24
Мөр 3 31 32 33 34
Массив 2
Массив 3
Олон хэмжээст массив
Олон хэмжээст массивыг зарлах
int foo[1][2][3];
int test[2][3][4] = { {{3, 4, 2, 3}, {0, -3, 9, 11},
{23, 12, 23, 2}}, {{13, 4, 56, 3},
{5, 9, 3, 5}, {3, 1, 4, 9}}};
char vowels[1][5] = { {'a', 'e', 'i', 'o', 'u'} };
Олон хэмжээст массив
Жишээ №9: Олон хэмжээст массивтай ажиллах
1. #include <stdio.h>
2. int main() {
3. int test[2][3][2];
4. printf("Enter 12 values: n");
5. for (int i = 0; i < 2; ++i) {
6. for (int j = 0; j < 3; ++j)
7. { for (int k = 0; k < 2; ++k)
8. { scanf("%d", &test[i][j][k]); } } }
9. printf("nDisplaying values:n");
10. for (int i = 0; i < 2; ++i) {
11. for (int j = 0; j < 3; ++j)
12. { for (int k = 0; k < 2; ++k)
13. { printf("test[%d][%d][%d] = %dn", i, j, k, test[i][j][k]); } } }
14.return 0; }
Олон хэмжээст массив
Displaying Values:
test[0][0][0] = 1
test[0][0][1] = 2
test[0][1][0] = 3
test[0][1][1] = 4
test[0][2][0] = 5
test[0][2][1] = 6
test[1][0][0] = 7
test[1][0][1] = 8
test[1][1][0] = 9
test[1][1][1] = 10
test[1][2][0] = 11
test[1][2][1] = 12
Үр дүн:
Enter 12 values:
1
2
3
4
5
6
7
8
9
10
11
12

Лекц №11

  • 1.
    Лекц №11 Сэдэв: Олонхэмжээст массив
  • 2.
  • 3.
    Хоёр хэмжээст массив Хоёрхэмжээст массивыг өөрөөр хэлбэл матриц, хүснэгт гэнэ. Матриц нь мөр баганын элементүүдийн тоо ижилхэн бол квадрат матриц гэнэ. (жишээ нь тоо эсвэл тэмдэг гэх мэт). Компьютерийн шинжлэх ухаанд матрицыг хоёр хэмжээст массив хэлбэрээр илэрхийлдэг бөгөөд энэ нь бүх элементүүд нь хоёр индекстэй массив юм. Хоёр хэмжээст массивын бичигдэх хэлбэр: массивын төрөл хувьсагчийн_нэр[хэмжээ][хэмжээ]
  • 4.
  • 5.
    Хоёр хэмжээст массив Жишээлбэл:float x[3][4]; Энд x нь хоёр хэмжээст (2d) массив юм. Массив нь 12 элемент агуулах боломжтой. Массивыг 3 мөр бүхий хүснэгт гэж бодож болох бөгөөд мөр бүр нь 4 баганаас бүрддэг. Багана 1 Багана 2 Багана 3 Багана 4 Мөр 1 x[0][0] x[0][1] x[0][2] x[0][3] Мөр 2 x[1][0] x[1][1] x[1][2] x[1][3] Мөр 3 x[2][0] x[2][1] x[2][2] x[2][3]
  • 6.
    Хоёр хэмжээст массив Хоёрхэмжээст массивыг зарлах int c[2][3] = {{1, 3, 0}, {-1, 5, 9}}; int c[][3] = {{1, 3, 0}, {-1, 5, 9}}; int c[2][3] = {1, 3, 0, -1, 5, 9}; int a[3][4] = { {0, 1, 2, 3} , /* 0-р мөр*/ {4, 5, 6, 7} , /* 1-р мөр */ {8, 9, 10, 11} /* 2-р мөр */}; int a[3][4] = { {0, 1, 2, 3},К4, 5, 6, 7},{8, 9, 10, 11}};
  • 7.
    Хоёр хэмжээст массив Жишээ№1: Хоёр хэмжээст массивын элементийн утгуудыг хэвлэх #include <stdio.h> int main () { /* 5 мөр 2 багана бүхий массив*/ int a[5][2] = { {0,0}, {1,2}, {2,4}, {3,6},{4,8}}; int i, j; /* массивын элемент бүрийн утгыг хэвлэх*/ for ( i = 0; i < 5; i++ ) { for ( j = 0; j < 2; j++ ) { printf("a[%d][%d] = %dn", i,j, a[i][j] ); } } return 0; } Үр дүн: a[0][0]: 0 a[0][1]: 0 a[1][0]: 1 a[1][1]: 2 a[2][0]: 2 a[2][1]: 4 a[3][0]: 3 a[3][1]: 6 a[4][0]: 4 a[4][1]: 8
  • 8.
    Хоёр хэмжээст массив Жишээ№2: Хоёр хэмжээст массивын элементүүдийг гараас оруулж хэвлэх #include <stdio.h> const int M = 2; const int N = 2; main(){ int i, j, A[M][N]; printf("Massiv garaas oruulah heseg n"); for ( i = 0; i < M; i ++ ) for ( j = 0; j < N; j ++ ) {printf ("A[%d][%d]=", i, j); scanf ("%d", & A[i][j]); } printf("Massiv hevleh heseg n"); for ( i = 0; i < M; i ++ ) for ( j = 0; j < N; j ++ ) {printf ("A[%d][%d]=%d n",i,j, A[i][j]); } return 0; } Үр дүн: Massiv garaas oruulah heseg A[0][0]=1 A[0][1]=2 A[1][0]=3 A[1][1]=4 Massiv hevleh heseg A[0][0]=1 A[0][1]=2 A[1][0]=3 A[1][1]=4
  • 9.
    Хоёр хэмжээст массив Жишээ№3: Хоёр хэмжээст массивын элементүүдийн нийлбэрийг олох 1. #include <stdio.h> 2. int main() { 3. float a[2][2], b[2][2], result[2][2]; 4. printf("Enter elements of 1st matrixn"); 5. for (int i = 0; i < 2; ++i) 6. for (int j = 0; j < 2; ++j) 7. { printf("Enter a%d%d: ", i + 1, j + 1); scanf("%f", &a[i][j]); } 8. printf("Enter elements of 2nd matrixn"); 9. for (int i = 0; i < 2; ++i) 10. for (int j = 0; j < 2; ++j)
  • 10.
    Хоёр хэмжээст массив 11.{ printf("Enter b%d%d: ", i + 1, j + 1); scanf("%f", &b[i][j]); } 12. for (int i = 0; i < 2; ++i) 13. for (int j = 0; j < 2; ++j) 14. { result[i][j] = a[i][j] + b[i][j]; } 15.printf("nSum Of Matrix:"); 16. for (int i = 0; i < 2; ++i) 17. for (int j = 0; j < 2; ++j) 18. { printf("%.1ft", result[i][j]); 19. if (j == 1) printf("n"); } 20.return 0; } Үр дүн: Enter elements of 1st matrix Enter a11: 2; Enter a12: 0.5; Enter a21: -1.1; Enter a22: 2; Enter elements of 2nd matrix Enter b11: 0.2; Enter b12: 0; Enter b21: 0.23; Enter b22: 23; Sum Of Matrix: 2.2 0.5 -0.9 25.0
  • 11.
    Хоёр хэмжээст массив Жишээ№4: Хоёр хэмжээст массивын диагоналийн дагуух элементүүдтэй ажиллах. printf(“Гол диагональ:n"); for ( i = 0; i < N; i ++ ) printf ("%d ", A[i][i]); printf("n Эсрэг диагональ :n"); for ( i = 0; i < N; i ++ ) printf ("%d ", A[i][N-1-i]);
  • 12.
    Хоёр хэмжээст массив Жишээ№5: Хоёр хэмжээст массивын гол диагоналиас доошхи элементүүдтэй ажиллах for ( i = 0; i < N; i ++ ) for ( j = 0; j < i; j ++ ) A[i][j] = 0;
  • 13.
    Хоёр хэмжээст массив Жишээ№6: Хоёр хэмжээст массивын эсрэг диагоналиас доошхи элементүүдтэй ажиллах for ( i = 0; i < N; i ++ ) for ( j = N-1-i; j < N; j ++ ) A[i][j] = 0;
  • 14.
    Хоёр хэмжээст массив Жишээ№7: Дурын хоёр хэмжээст массивын элементүүдтэй ажиллах #include <stdio.h> int main(){ int i, j, M, N; printf("Massiv moriig oruul n"); scanf ("%d", &M); printf("Massiv baganiig oruuln"); scanf ("%d", &N); int A[M][N]; printf("Massiv garaas oruulah heseg n"); for ( i = 0; i < M; i ++ ) for ( j = 0; j < N; j ++ ) {printf ("A[%d][%d]=", i, j); scanf ("%d", &A[i][j]); } printf("Massiv hevleh heseg n"); for ( i = 0; i < M; i ++ ) for ( j = 0; j < N; j ++ ) {printf ("A[%d][%d]=%d n",i,j, A[i][j]); } return 0; } Үр дүн: Massiv moriig oruul 3 Massiv baganiig oruul 2 Massiv garaas oruulah heseg A[0][0]=1 A[0][1]=2 A[1][0]=3 A[1][1]=4 A[2][0]=5 A[2][1]=6 Massiv hevleh heseg A[0][0]=1 A[0][1]=2 A[1][0]=3 A[1][1]=4 A[2][0]=5 A[2][1]=6
  • 15.
    Хоёр хэмжээст массив Жишээ№8: Дурын хоёр хэмжээст массивын хамгийн их, бага элементийг олох #include<stdio.h> int main() { int m, n, largest, smallest; int largrowloc, largcolumnloc, smallrowloc, smallcolumnloc; printf("Enter number of row and column: "); scanf("%d %d",&m,&n); int arr[m][n], i, j; for(i=0;i<m;i++) { for(j=0;j<n;j++) { printf("Enter arr[%d][%d]: ",i,j); scanf("%d", &arr[i][j]); } printf("n"); } printf("Entered 2D Array:n"); for(i=0;i<m;i++) {
  • 16.
    for(j=0;j<n;j++) { printf("%dt",arr[i][j]); } printf("n"); } largest=arr[0][0]; smallest=arr[0][0]; for(i=0;i<m;i++) { for(j=0;j<n;j++) { if(largest<arr[i][j]) { largest=arr[i][j]; largrowloc=i; //row locationof largest element Хоёр хэмжээст массив printf("Entered 2D Array:n"); for(i=0;i<m;i++) { for(j=0;j<n;j++) { printf("%dt",arr[i][j]); } printf("n"); } largest=arr[0][0]; smallest=arr[0][0];
  • 17.
    Хоёр хэмжээст массив largcolumnloc=j;//column location of largest element } if(smallest>arr[i][j]) { smallest=arr[i][j]; smallrowloc=i; //row location of smallest element smallcolumnloc=j; //column location of smallest element } } } printf("n"); printf("Largest element in array is %d in location arr[%d][%d]n", largest, largrowloc, largcolumnloc); printf("Smallest element in array is %d in location arr[%d][%d]n", smallest, smallrowloc, smallcolumnloc); return 0; }
  • 18.
    Хоёр хэмжээст массив Үрдүн: Enter number of row and column: 3 3 Enter arr[0][0]: 1 Enter arr[0][1]: 2 Enter arr[0][2]: 3 Enter arr[1][0]: 4 Enter arr[1][1]: 5 Enter arr[1][2]: 6 Enter arr[2][0]: 7 Enter arr[2][1]: 8 Enter arr[2][2]: 9 Entered 2D Array: 1 2 3 4 5 6 7 8 9 Largest element in array is 9 in location arr[2][2] Smallest element in array is 1 in location arr[0][37]
  • 19.
  • 20.
    Олон хэмжээст массив Олонхэмжээст массивын бичигдэх хэлбэр: массивын төрөл хувьсагчийн_нэр[хэмжээ1][хэмжээ2]… [хэмжээN] Багана 1 Багана 2 Багана 3 Багана 4 Мөр 1 11 12 13 14 Мөр 2 21 22 23 24 Мөр 3 31 32 33 34 Массив 1 Багана 1 Багана 2 Багана 3 Багана 4 Мөр 1 11 12 13 14 Мөр 2 21 22 23 24 Мөр 3 31 32 33 34 Багана 1 Багана 2 Багана 3 Багана 4 Мөр 1 11 12 13 14 Мөр 2 21 22 23 24 Мөр 3 31 32 33 34 Массив 2 Массив 3
  • 21.
    Олон хэмжээст массив Олонхэмжээст массивыг зарлах int foo[1][2][3]; int test[2][3][4] = { {{3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2}}, {{13, 4, 56, 3}, {5, 9, 3, 5}, {3, 1, 4, 9}}}; char vowels[1][5] = { {'a', 'e', 'i', 'o', 'u'} };
  • 22.
    Олон хэмжээст массив Жишээ№9: Олон хэмжээст массивтай ажиллах 1. #include <stdio.h> 2. int main() { 3. int test[2][3][2]; 4. printf("Enter 12 values: n"); 5. for (int i = 0; i < 2; ++i) { 6. for (int j = 0; j < 3; ++j) 7. { for (int k = 0; k < 2; ++k) 8. { scanf("%d", &test[i][j][k]); } } } 9. printf("nDisplaying values:n"); 10. for (int i = 0; i < 2; ++i) { 11. for (int j = 0; j < 3; ++j) 12. { for (int k = 0; k < 2; ++k) 13. { printf("test[%d][%d][%d] = %dn", i, j, k, test[i][j][k]); } } } 14.return 0; }
  • 23.
    Олон хэмжээст массив DisplayingValues: test[0][0][0] = 1 test[0][0][1] = 2 test[0][1][0] = 3 test[0][1][1] = 4 test[0][2][0] = 5 test[0][2][1] = 6 test[1][0][0] = 7 test[1][0][1] = 8 test[1][1][0] = 9 test[1][1][1] = 10 test[1][2][0] = 11 test[1][2][1] = 12 Үр дүн: Enter 12 values: 1 2 3 4 5 6 7 8 9 10 11 12