PowerC++ 문제풀이, Chapter 9, Programming 6번
Complex.h
#pragma once
#include <iostream>
using namespace std;
class Complex {
private:
double real; //실수부
double imag; //허수부
char oper; // 연산자
public:
void setComplex(double r, char o, double i)
{
real = r;
imag = i;
oper = o;
cout << "생성한 복소수 : " << real << oper << imag << "i" << endl;
}
void print() { cout << real << oper << imag << "i" << endl; }
void operate(char oper, Complex number)
{
//연산값을 넣어놓는 변수
double realnumber = 0;
double imaginarynumber = 0;
//연산자를 분류하여 연산
if (oper == '+')
{
realnumber = real + number.real;
imaginarynumber = imag + number.imag;
}
else if (oper == '-')
{
realnumber = real - number.real;
imaginarynumber = imag - number.imag;
}
else if (oper == '*')
{
realnumber = (real* number.real) + (imag * number.imag);
imaginarynumber = (real * number.imag) + (number.real * imag);
}
else if (oper == '/')
{
// 복잡한데
}
else
cout << "올바른 연산자를 입력해주세요.";
cout << "연산 결과 : " << realnumber << oper <<imaginarynumber << "i" << endl;
}
};
Complex.cpp
#include "Complex.h"
int main()
{
Complex no1;
Complex no2;
no1.setComplex(3,'+',5);
no2.setComplex(5,'-',3);
no1.print();
no2.print();
no1.operate('+', no2);
no1.operate('*', no2);
return 0;
}
이 문제 코드는 팀원마다 정말 다양하게 만들어와서 재밌었다. 문과출신에 수학은 손놓았던 사람으로서... 이런 문제 내기전에 복소수의 연산을 할 수 있냐고 먼저 물어봐줬으면 좋겠다.