#include <stdio.h>
#include <stdlib.h>
#define SIZE 2
void matAdd(double a[][SIZE], double b[][SIZE], double c[][SIZE], int rows, int cols) {
int i, j;
for(i=0;i<rows;i++)
for(j=0;j<cols;j++)
c[i][j]=a[i][j]+b[i][j];
}
void matSub(double a[][SIZE], double b[][SIZE], double c[][SIZE], int rows, int cols) {
int i, j;
for(i=0;i<rows;i++)
for(j=0;j<cols;j++)
c[i][j]=a[i][j]-b[i][j];
}
void matMult(double a[][SIZE], double b[][SIZE], double c[][SIZE],
int num1, int num2, int num3) {
int i, j, k;
double x;
for(i=0;i<SIZE;i++) {
for(j=0;j<SIZE;j++) {
x=0.;
for(k=0;k<SIZE;k++)
x=x+a[i][k]*b[k][j];
c[i][j]=x;
}
}
}
void matPrint(double a[][SIZE], int rows, int cols) {
int i, j;
for(i=0;i<rows;i++) {
for(j=0;j<cols;j++) {
printf("%10.4f", a[i][j]);
}
printf("\n");
}
}
int main() {
int n1, n2, n3;
int i, j;
double x;
double arrA[SIZE][SIZE], arrB[SIZE][SIZE], arrC[SIZE][SIZE];
for(i=0;i<SIZE;i++) {
for(j=0;j<SIZE;j++) {
printf("행렬 1 [%d][ %d] 의 값: ", i, j);
scanf("%lf", &x);
arrA[i][j]=x;
}
}
for(i=0;i<SIZE;i++) {
for(j=0;j<SIZE;j++) {
printf("행렬 2 [%d][ %d] 의 값: ", i, j);
scanf("%lf", &x);
arrB[i][j]=x;
}
}
matAdd(arrA, arrB, arrC, SIZE, SIZE);
printf("\n행렬의 덧셈: \n");
matPrint(arrC, SIZE, SIZE);
matSub(arrA, arrB, arrC, SIZE, SIZE);
printf("\n행렬의 뺄셈: \n");
matPrint(arrC, SIZE,SIZE);
// #########################################################################
// 행렬A의 행 n1 열 n2 행렬B의 행 n2 열 n3 이어야 한다. 행렬C의 행 n1 열 n3 이어야 한다.
// 여기서는 간단히 하기 위해서 정방행렬의 경우를 돌려본 것이다.
//##########################################################################
matMult(arrA, arrB, arrC, SIZE, SIZE, SIZE);
printf("\n행렬의 곱셈: \n");
matPrint(arrC, SIZE, SIZE);
return 0;
}
'c·c++ > c 프로그래밍' 카테고리의 다른 글
문자열 복사하기 (0) | 2012.03.27 |
---|---|
소수점이 있는 십진수 뒤집어서 출력하기 (0) | 2012.03.26 |
주민번호 체크수자는 어떻게 구하나? (0) | 2012.03.26 |
네이버 질문 중에서 (0) | 2012.03.26 |
행렬의 덧셈, 뺄셈, 곱셈 - 동적할당 (0) | 2012.03.25 |