[C++] 복소수를 다루는 class 만들기

2021. 10. 19. 15:53·Programming Language/C++
반응형
#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
'Programming Language/C++' 카테고리의 다른 글
  • [C++] 큐(Queue)를 연결리스트로 구현해보자
Giken
Giken
𝐒𝐲𝐬𝐭𝐞𝐦.𝐨𝐮𝐭.𝐩𝐫𝐢𝐧𝐭𝐥𝐧("𝐇𝐞𝐥𝐥𝐨 𝐖𝐨𝐫𝐥𝐝!");
  • Giken
    개발자 기켄
    Giken
  • 전체
    오늘
    어제
    • 분류 전체보기 (148)
      • Programming Language (26)
        • C (3)
        • C++ (2)
        • Java (19)
      • Web (4)
      • Database (1)
        • SQL (5)
      • Spring (10)
      • PHP (7)
      • Linux (1)
      • Server (1)
      • Infra (3)
      • Algorithm (74)
        • 백준 (71)
        • 프로그래머스 (0)
      • 프로젝트 (2)
      • Etc (8)
      • 낙서 (5)
  • 블로그 메뉴

    • GitHub
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    윤년
    1330
    SQL고득점키트
    프로그래머스
    DB
    2588
    SQL
    2753
    백준
    평년
    C
    9498
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Giken
[C++] 복소수를 다루는 class 만들기
상단으로

티스토리툴바