Computer >> Máy Tính >  >> Lập trình >> C ++

Phép nhân số phức trong C ++

Giả sử chúng ta có hai chuỗi đại diện cho số phức, chúng ta phải phân tích cú pháp chúng và thực hiện phép nhân số phức, sau đó trả về kết quả là một chuỗi.

Vì vậy, nếu đầu vào giống như “1 + -1i” và “1 + -1i”, thì kết quả sẽ là “0 + -2i”.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • aa:=một cặp số thực và ảo của số phức đầu tiên
  • bb:=một cặp số thực và ảo của số phức thứ hai
  • x:=aa.real * bb.real - aa.img * bb.img
  • y:=aa.real * bb.img + aa.img * bb.real
  • trả về chuỗi là “x + yi”

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   string complexNumberMultiply(string a, string b) {
      pair <int, int> aa = parse(a);
      pair <int, int> bb = parse(b);
      int x = aa.first * bb.first - aa.second * bb.second;
      int y = aa.first * bb.second + aa.second * bb.first;
      return to_string(x) + "+" + to_string(y) + "i";
   }
   pair <int, int> parse(string s){
      pair <int, int> ret;
      int plus = find(s.begin(), s.end(), '+') - s.begin();
      int i = find(s.begin(), s.end(), 'i') - s.begin();
      ret.first = stoi(s.substr(0, plus));
      ret.second = stoi(s.substr(plus + 1, i - plus));
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.complexNumberMultiply("1+-1i", "1+-1i"));
}

Đầu vào

"1+-1i"
"1+-1i"

Đầu ra

0+-2i