#include <iostream>
#include <complex>
using namespace std;
int main(void) {
complex <double> a (8.0, 3.0); // 복소수 8+3i
complex <double> b (5.0, 2.0); // 복소수 5+2i
complex <double> result;
// 복소수 a 출력
cout << a << endl;
// 출력 결과: (8,3)
// 복소수 b 출력
cout << b << endl;
// 출력 결과: (5,2)
// 복소수의 더하기
result = a + b;
cout << result << endl;
// 출력 결과: (13,5)
// 13+5i 와 같음
// 복소수의 빼기
result = a - b;
cout << result << endl;
// 출력 결과: (3,1)
// 3+1i 와 같음
// 복소수의 곱하기
result = a * b;
cout << result << endl;
// 출력 결과: (34,31)
// 34+31i 와 같음
// 복소수의 나누기
result = a / b;
cout << result << endl;
// 출력 결과: (1.58621,-0.0344828)
// 1.58621-0.0344828i 와 같음
double d;
// 복소수 a의 실수부 구하기
d = real(a);
cout << d << endl;
// 출력 결과: 8
// 복소수 a의 허수부 구하기
d = imag(a);
cout << d << endl;
// 출력 결과: 3
// 복소수 a의 절대값 구하기
d = abs(a);
cout << d << endl;
// 출력 결과: 8.544
return 0;
}
//////////////////////////////////
#include<iostream>
#include<iomanip>
using namespace std;
class complex
{
public:
complex(double real = 0,double image = 0)
{
// cout<<"complex constructor"<<endl;
m_real = real;
m_image = image;
}
~complex()
{
// cout<<"complex destructor"<<endl;
}
//operations
const complex Add(const complex &r)
{
return complex(m_real+r.m_real,m_image+r.m_image);
}
const complex Sub(const complex &r)
{
return complex(m_real-r.m_real,m_image-r.m_image);
}
const complex Multi(const complex &r)
{
return complex(m_real*r.m_real - m_image*r.m_image , m_image*r.m_real + m_real*r.m_image);
}
// 켤레복소수 구하기..
const complex Conj(void)
{
return complex(m_real,-m_image);
}
// 정수로 나누기 .. 길게 늘여쓰기 싫어서...ㅋ 나누어 지는 부분이 a^2 + b^2 이므로....
const complex Scal_div(double x)
{
return complex( m_real / x , m_image / x );
}
const complex Div(complex &r)
{
complex c=(r.Conj());
return Multi(c.Scal_div(((r.m_real*r.m_real)+(r.m_image)*(r.m_image))));
}
// 나중에 설명...z
friend ostream& operator<<(ostream &os , const complex &r)
{
return os<<r.m_real<<showpos<< r.m_image<<"i"<<endl;
}
private:
double m_real;
double m_image;
};
void main()
{
complex a(1,2),b(2,-3);
cout << "a + b = " << a.Add(b) ;
cout << "a - b = " << a.Sub(b) ;
cout << "a * b = " << a.Multi(b) ;
cout << "a / b = " << a.Div(b);
}
'프로그래머의 길 > C & C++' 카테고리의 다른 글
윈도우 종료 (2) | 2010.01.06 |
---|---|
CStringT::Tokenize. (0) | 2009.12.02 |
Class Map 사용예제 (0) | 2009.11.30 |
string <-> wstring (0) | 2009.07.22 |
비트맵 파일 RGB 조절 (0) | 2008.05.19 |