반응형
#include <iostream>
using namespace std;
class Complex
{
private:
double realNum_;
double imaginaryNum_;
public:
void setValue(double r, double i) {
realNum_ = r;
imaginaryNum_ = i;
}
double getReal() {
return realNum_;
}
double getImaginary() {
return imaginaryNum_;
}
void print() {
cout << realNum_ << " + " << imaginaryNum_ << "i" << endl;
}
Complex& addTo(Complex sum) {
this->realNum_ += sum.realNum_; //원본 계산
this->imaginaryNum_ += sum.imaginaryNum_;
return *this;
//a.addTo(a).addTo(b).addTo(c); // 개념적으로 말하자면 a += a; a+= b; a+= c;
}
};
Complex add(Complex a, Complex b) {
Complex c;
double realNum;
double imaginaryNum;
realNum = a.getReal() + b.getReal();
imaginaryNum = a.getImaginary() + b.getImaginary();
c.setValue(realNum, imaginaryNum);
return c;
}
Complex sub(Complex a, Complex b) {
Complex c;
double realNum;
double imaginaryNum;
realNum = a.getReal() - b.getReal();
imaginaryNum = a.getImaginary() - b.getImaginary();
c.setValue(realNum, imaginaryNum);
return c;
}
int main() {
Complex a, b, c, d;
a.setValue(1.1, 2.2); // 이것은 1.1 + 2.2i 라는 뜻.
b.setValue(2.2, 3.3);
c = add(a, b); // add는 global 함수이다. 작성하라. 실수부는 실수부끼리, 허수부는 허수부끼리 더한다.
a.addTo(b); // a에 b를 더한다.
d = sub(a, b); // 뺄셈을 나타내는 global 함수. a 에서 b를 뺀다.
cout << "a = ";
a.print(); // 자기 자신의 값을 복소수 형태로 출력하라.
cout << "c = ";
c.print();
cout << "d = "; // 추가. 2017.9.28.
d.print(); // 추가. 2017.9.28.
a.addTo(a).addTo(b).addTo(c); // 개념적으로 말하자면 a += a; a+= b; a+= c;
cout << "a = ";
a.print();
/*
a = 3.3 + 5.5i
c = 3.3 + 5.5i
d = 1.1 + 2.2i
a = 12.1 + 19.8i
도출해야할 출력.
*/
}
정수를 나타내는 Integer 라는 클래스를 만들어보겠습니다.
addTo 함수는 자기 자신에게 정수 값을 더해주는 함수
print() 함수는 정수 값을 줄바꿈과 함께 출력하는 함수
Integer i; // 0으로 초기화
i.addTo(3); i.print(); // i는 3이 된다.
i.addTo(5); i.print(); // i 는 8이 된다.
i.addTo(10).addTo(10); i.print(); // 28 이 되어야 한다.
addTo함수는 참조변환된 자기자신의 class를 반환해야한다는 사실이 중요하겠습니다.
.addTo()가 두 번 이상 붙을때 사본에 값을 저장하지 않고, 원본에 저장하기 위해서는
참조변환된 class를 반환해야했던 것입니다.
반응형
'Programming Language > C++' 카테고리의 다른 글
[C++] 큐(Queue)를 연결리스트로 구현해보자 (0) | 2021.10.19 |
---|