728x90
http://gaetaeng.tistory.com/25[2차원배열의 구현 & 사용방식]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | #include <stdio.h> int** malloc2D(int row, int col); void printSumForRow(int** data, int row, int col); void print(int** data, int row, int col); void add(int** x, int** y, int** z, int row, int col); void mul(int x, int** a, int row, int col); void Matrixmul(int** x, int** y, int** z, int m, int n, int l); int main() { int** x = malloc2D(2,3); int** y = malloc2D(2,3); int** z = malloc2D(2,3); int** p = malloc2D(3,3); int** r = malloc2D(2,3); for(int i = 0; i < 2; i++) { for(int j = 0; j < 3;j ++) { x[i][j] = i+j; } } for(int i = 0; i < 2; i++) { for(int j = 0; j < 3;j ++) { y[i][j] = (i+1)*(j+1); } } for(int i = 0; i < 3; i++) { for(int j = 0; j < 3;j ++) { p[i][j] = i+1; } } p[1][1] = 1; p[2][1] = 2; print(x,2,3); print(y,2,3); add(x,y,z,2,3); print(z,2,3); mul(3,x,2,3); print(x,2,3); print(x,2,3); print(p,3,3); Matrixmul(x,p,r,2,3,3); print(r,2,3); printSumForRow(x,2,3); printf("\n"); } void add(int** a, int** b, int** c, int row, int col) { for(int i = 0; i < row; i++) { for(int j = 0; j < col;j ++) { c[i][j] = a[i][j] + b[i][j]; } } } void Matrixmul(int** x, int** y, int** z, int m, int n, int l) { for(int i = 0; i < m; i++){ for(int j = 0; j < l; j++){ int iSum = 0; for(int k = 0; k < n; k++){ iSum += x[i][k]*y[k][j]; } z[i][j] = iSum; } } } void mul(int x, int** a, int row, int col) { for(int i = 0; i < row; i++) { for(int j = 0; j < col;j ++) { a[i][j] *= x; } } } int** malloc2D(int row, int col) { int** x; x = new int*[row]; for(int i = 0; i < 3; i++) { x[i] = new int[col]; } return x; } void printSumForRow(int** data, int row, int col) { for(int i = 0; i < row; i++) { int iSum = 0; for(int j = 0; j < col; j++) { iSum += data[i][j]; } printf("Sum = %d\n",iSum); } } void print(int** data, int row, int col) { for(int i = 0; i < row; i++) { for(int j = 0; j < col;j ++) { printf("%d ",data[i][j]); } printf("\n"); } printf("=========\n"); } | cs |
728x90
728x90
'Dev > 알고리즘-자료구조' 카테고리의 다른 글
[개탱][C++][String 클래스][ Operator Overloading 을 이용하여 String 클래스를 구현 ] (0) | 2018.01.02 |
---|---|
[개탱][C][C++][2차원배열][operator overloading][행렬] (0) | 2018.01.02 |
원형 연결 리스트 N개의 리스트에서 K번째 삭제하기 - [C] [자료구조] 구현하기(Circular Linked List) (0) | 2017.12.21 |
[개탱][C][컴공과제][희소행렬의 합구하기][파일 입출력][구조체] (0) | 2017.12.21 |
[개탱][C언어][하노이탑][간단한 알고리즘][재귀][Stack][스택][그래픽화][그래픽][도형] (0) | 2017.12.21 |