문제.
7. 2차원 행렬을 추상화한 Matrix 클래스를 활용하는 다음 코드가 있다.
int main() {
Matrix a(4, 3, 2, 1), b;
int x[4], y[4] = { 1,2,3,4 }; // 2차원 행렬의 4 개의 원소 값
a >> x; // a의 각 원소를 배열 x에 복사, x[]는 {4,3,2,1}
b << y; // 배열 y의 원소 값을 b의 각 원소에 설정
for (int i = 0; i < 4; ++i) cout << x[i] << ' '; // x[] 출력
cout << endl;
b.show();
}
(1) <<, >> 연산자 함수를 Matrix의 멤버 함수로 구현하라.
#include <iostream>
using namespace std;
class Matrix {
int x[4];
public:
Matrix() { for (int i = 0; i < 4; ++i) x[i] = 0; }
Matrix(int x1, int x2, int x3, int x4) {
x[0] = x1; x[1] = x2; x[2] = x3; x[3] = x4;
}
void show() {
cout << "Matrix = { ";
for (int i = 0; i < 4; ++i)
cout << x[i] << ' ';
cout << "}" << endl;
}
Matrix& operator>>(int x[]);
Matrix& operator<<(int x[]);
};
Matrix& Matrix::operator>>(int x[]) {
for (int i = 0; i < 4; ++i) x[i] = this->x[i];
return *this;
}
Matrix& Matrix::operator<<(int x[]) {
for (int i = 0; i < 4; ++i) this->x[i] = x[i];
return *this;
}
int main() {
Matrix a(4, 3, 2, 1), b;
int x[4], y[4] = { 1,2,3,4 }; // 2차원 행렬의 4 개의 원소 값
a >> x; // a의 각 원소를 배열 x에 복사, x[]는 {4,3,2,1}
b << y; // 배열 y의 원소 값을 b의 각 원소에 설정
for (int i = 0; i < 4; ++i) cout << x[i] << ' '; // x[] 출력
cout << endl;
b.show();
}
(2) <<, >> 연산자 함수를 Matrix의 프렌드 함수로 구현하라.
#include <iostream>
using namespace std;
class Matrix {
int x[4];
public:
Matrix() { for (int i = 0; i < 4; ++i) x[i] = 0; }
Matrix(int x1, int x2, int x3, int x4) {
x[0] = x1; x[1] = x2; x[2] = x3; x[3] = x4;
}
void show() {
cout << "Matrix = { ";
for (int i = 0; i < 4; ++i)
cout << x[i] << ' ';
cout << "}" << endl;
}
friend Matrix& operator>>(Matrix &op,int x[]);
friend Matrix& operator<<(Matrix &op,int x[]);
};
Matrix& operator>>(Matrix &op ,int x[]) {
for (int i = 0; i < 4; ++i) x[i] = op.x[i];
return op;
}
Matrix& operator<<(Matrix &op ,int x[]) {
for (int i = 0; i < 4; ++i) op.x[i] = x[i];
return op;
}
int main() {
Matrix a(4, 3, 2, 1), b;
int x[4], y[4] = { 1,2,3,4 }; // 2차원 행렬의 4 개의 원소 값
a >> x; // a의 각 원소를 배열 x에 복사, x[]는 {4,3,2,1}
b << y; // 배열 y의 원소 값을 b의 각 원소에 설정
for (int i = 0; i < 4; ++i) cout << x[i] << ' '; // x[] 출력
cout << endl;
b.show();
}
'programming > 명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습 문제 7장 9번 (0) | 2020.08.16 |
---|---|
명품 C++ programming 실습 문제 7장 8번 (0) | 2020.08.16 |
명품 C++ programming 실습 문제 7장 6번 (0) | 2020.08.16 |
명품 C++ programming 실습 문제 7장 5번 (0) | 2020.08.16 |
명품 C++ programming 실습문제 7장 4번 (0) | 2020.08.15 |
댓글