반응형
C++로 행렬 연산 계산기를 만들어 보았다. 연산자에 i를 입력하면 역행렬도 구할 수 있다.
반응형
[소스코드]
#include <stdio.h>
int main() {
float A[2][2]; //첫번째 2x2행렬 생성
float B[2][2]; //두번째 2x2행렬 생성
float C[2][2] = { 0,0,0,0 }; //결과 2x2행렬 생성, 0으로 초기화
char c; //연산자
printf("수행할 연산자를 입력하시오: ");
scanf_s("%c", &c); //연산자를 입력 받음
//만약 연산자가 i일 경우 배열 A만 입력받음
if (c == 105) {
printf("2x2 행렬을 입력하시오: ");
scanf_s("%f %f %f %f", &A[0][0], &A[0][1], &A[1][0], &A[1][1]);
printf("\n");
float D = *(*(A + 0) + 0)* *(*(A + 1) + 1) - *(*(A + 0) + 1)* *(*(A + 1) + 0); // 역행렬의 D값인 ad-bc를 구한다.
//역행렬이 존재하지 않는 조건은 ad-bc=0 이다.
if (D == 0) {
printf("\n역행렬이 존재하지 않습니다.");
}
//역행렬이 존재한다면 역행렬을 구해 C에 저장한다. 포인터 역참조 연산자를 이용
else {
C[0][0] = (1 / D)* *(*(A + 1) + 1);
C[0][1] = -(1 / D)* *(*(A + 0) + 1);
C[1][0] = -(1 / D)* *(*(A + 1) + 0);
C[1][1] = (1 / D)* *(*(A + 0) + 0);
//결과 출력
printf("연산의 결과는\n\n");
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
printf("%5.1f", *(*(C + i) + j));
}
printf("\n"); //행, 열의 줄바꿈
}
}
}
//만약 입력된 연산자가 +, -, * 이면 2개의 행렬을 입력받아 각각 A, B에 저장
else if(c==43 || c==42 || c==45) {
printf("첫 번째 2x2 행렬을 입력하시오: ");
scanf_s("%f %f %f %f", &A[0][0], &A[0][1], &A[1][0], &A[1][1]);
printf("두 번째 2x2 행렬을 입력하시오: ");
scanf_s("%f %f %f %f", &B[0][0], &B[0][1], &B[1][0], &B[1][1]);
printf("\n");
//연산자가 + 인경우, 포인터 역참조 연산자를 이용
if (c == 43) {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
C[i][j] = *(*(A + i) + j) + *(*(B + i) + j);
}
}
}
//연산자가 - 인경우, 포인터 역참조 연산자를 이용
else if (c == 45) {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
C[i][j] = *(*(A + i) + j) - *(*(B + i) + j);
}
}
}
//연산자가 * 인경우, 포인터 역참조 연산자를 이용
else if (c == 42) {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
for (int k = 0; k < 2; k++) {
C[i][j] += *(*(A + i) + k) * *(*(B + k) + j); //행렬의 곱셈을 쉽게 구하기 위해 생각한 방식이다.
}
}
}
}
//결과 출력
printf("연산의 결과는\n\n");
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
printf("%5.1f ", *(*(C + i) + j));
}
printf("\n"); //행, 열의 줄바꿈
}
}
//만약 그외의 문자를 입력하면 오류를 출력
else {
printf("잘못된 연산자 입니다.");
}
printf("\n");
return 0;
}
반응형
'프로그래밍' 카테고리의 다른 글
C++ 틱택토 게임 (Tic Tac Toe) (5) | 2018.02.05 |
---|