예 비주얼 스튜디오의 C++ 코드고요, 3*3 행렬의 덧샘과 곱셈을 하는 코드입니다.
실행시키면 바로 첫번째 3*3 행렬의 1,1 성분 부터 3.3 성분까지 입력하라고 하고요, 그 담엔 두번쨰 3*3 행렬의 1.1 성분부터 3.3 성분까지 입력하라고 합니다.
입력이 끝나면 바로 두 행렬의 합과 곱이 출력되는 코드입니다.
에러 없이 잘돌아가고요, 근데 이거를요, 실행했을때 바로 행렬 성분 입력하라고 뜨는게 하니라
간단한 메뉴가 먼저 떠서.. 이를테면 시행시키면 아래와 같은 메뉴가 뜨고
1. 첫번쨰 행렬 입력
2. 두번째 행렬 입력
3. 두행렬 더하기
4. 두행렬 곱하기
5. 결과보기
6. 끝
1번을 누르면 첫번쨰 행렬 입력하라고 나오고
2번 누르면 두번쨰
3누르면 두 행렬 더하고
4누르면 곱하고
5 누르면 결과를 볼 수 있도록...밑에 소스코드를 좀 손봐 주실 수 있는 분 계신가요?....제가 해보는데 자꾸 에러가 나서 그럽니다...고수님들 좀 도와주십쇼..
여기서 부터 코드입니다.
// 행렬구하기
#include <iostream>
#include <iomanip>
#include <conio.h>
using namespace std;
class Matrix // 클래스 Matrix 선언
{
private:
int data[3][3]; // 3*3 정수형 2차원배열 선언
public: // 함수와 각각 오퍼레이터 선언
Matrix();
Matrix(int ArrayMatrix3[3][3]);
~Matrix() {}
void show_matrix();
Matrix operator + (Matrix A); // 매트릭스 합을 구하는 연산자 +
Matrix operator * (Matrix A); // 매트릭스 곱을 구하는 연산자 *
void operator = (Matrix A);
};
int main() // main()함수 시작
{
int i, j;
int ArrayMatrix1[3][3];
int ArrayMatrix2[3][3];
// A행렬 : 입력
printf("\n[A를 입력하시오] \n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d행 %d열 : ", i + 1, j + 1);
scanf("%d", &ArrayMatrix1[i][j]);
}
}
printf("\n");
// B행렬 : 입력
printf("\n[B를 입력하시오]\n");
for (i = 0; i<3; i++)
{
for (j = 0; j<3; j++)
{
printf("%d행 %d열 : ", i + 1, j + 1);
scanf("%d", &ArrayMatrix2[i][j]);
}
}
Matrix data1(ArrayMatrix1); // data1을 첫번째 매트릭스로 지정
Matrix data2(ArrayMatrix2); // data2를 두번째 매트릭스로 지정
Matrix data3; // data3 지정
cout << "\n\n::::: Matrix1 + Matrix2 :::::\n\n"; // 출력
data3 = data1 + data2; // 첫번째 매트릭스와 두번째 매트릭스 더하기
data3.show_matrix(); // 더한 값인 data3을 출력
cout << "\n\n::::: Matrix1 * Matrix2 :::::\n\n"; // 출력
data3 = data1 * data2; // 두 매트릭스 곱하기
data3.show_matrix(); // 곱한값 출력
return 0; // 프로그램 종료
}
Matrix::Matrix() // 매트릭스 형태 설정
{
for (int i = 0; i<3; i++)
for (int j = 0; j<3; j++)
data[i][j] = 0;
}
void Matrix::show_matrix() // void형 show_matrix 선언
{
for (int i = 0; i<3; i++) // 3*3 형태의 매트릭스 출력
{
cout << "["; // 출력
for (int j = 0; j<3; j++)
cout << setw(6) << data[i][j] << "\t"; // 6칸 간격으로 정렬하면서 출력
cout << "]" << "\n"; // 출력
}
}
Matrix Matrix::operator + (Matrix A) // + 연산자 설정
{
Matrix ArrayMatrix3; // 두 행렬을 더하는 과정
for (int i = 0; i<3; i++)
for (int j = 0; j<3; j++)
ArrayMatrix3.data[i][j] = data[i][j] + A.data[i][j];
return ArrayMatrix3; // ArrayMatrix3값을 되돌림
}
Matrix Matrix::operator * (Matrix A) // * 연산자 설정
{
Matrix ArrayMatrix3; // 두행렬을 곱하는 과정
for (int i = 0; i<3; i++)
for (int j = 0; j<3; j++)
for (int k = 0; k<3; k++)
ArrayMatrix3.data[i][j] += data[i][k] * A.data[k][j];
return ArrayMatrix3; // ArrayMatrix3값을 되돌림
}
void Matrix::operator = (Matrix A) // = 연산자 설정
{
for (int i = 0; i<3; i++)
for (int j = 0; j<3; j++)
data[i][j] = A.data[i][j];
}
Matrix::Matrix(int ArrayMatrix3[3][3]) // ArrayMatrix3값으로 data구성
{
for (int i = 0; i<3; i++)
for (int j = 0; j<3; j++)
data[i][j] = ArrayMatrix3[i][j]; // data값에 ArrayMatrix3 값을 넣어줌
}
나도 초보지만, _gech() 사용하면 되지않을까요?
오퍼레이터 오버로딩은 다메다메 - return 0;
_getch()
계신가요->계시나요 (계시다는 동사라 형용사 뒤에 쓰이는 어미 -ㄴ가(요)를 붙인 계신가요는 적절하지 않고, 주로 동사 뒤에 쓰이는 어미 -나(요)를 붙인 계시나요가 적절함) [리듬 맞춤법 봇♬]