본문 바로가기
Major/Programming

[C++] 복소수 입력받아 변수에 저장하기 [Input a complex number and store it in a complex variable]

by 우프 2022. 6. 8.
반응형

std::cin으로 복소수 문자열을 입력받은 경우 complex 변수에 넣어주는 부분이 필요해서 해당부분만 작성함.

아래와 같이 cin으로 입력받은 결과가 s라는 string형 변수에 저장된 경우 z라는 복소수 변수로 넣을 수 있음

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <cmath>
#include <fstream>
#include <string>
#include <iomanip>
#include <time.h>
#include <ostream>
#include <complex>
 
using namespace std;
 
int main()
{
    complex<double> jj = complex<double>(0.01.0);
 
    complex<double> z;
    double real, imag;
 
    basic_string<char>::size_type indexCh1, indexCh2;
    static const basic_string<char>::size_type npos = -1;
 
    string s = "-1.345 - j 8.123";
    s.erase(remove(s.begin(), s.end(), ' '), s.end()); // 공백제거
    indexCh1 = s.find_first_of("j");    // 복소수 기호 위치
    indexCh2 = s.find_first_of("-"1); // - 부호가 있는지 찾기
 
    if (indexCh1 != npos)
    {
        real = stod(s.substr(0, indexCh1 - 1).c_str()); // j 앞까지 real로 저장
        imag = stod(s.substr(indexCh1+1, s.length() - indexCh1).c_str());   //j 뒤부터 imag로 저장
        if (indexCh2 != npos)   imag *= -1//j 앞에 -가 붙었으면 imag 값 - 처리
    }
    else{
        real = stod(s);
        imag = 0.0;
    }
    z = real + jj*imag;
    cout << z << endl;
 
    return 0;
}
cs
반응형

댓글