Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การคูณจำนวนเชิงซ้อนใน C++


สมมติว่าเรามีสองสตริงที่แสดงจำนวนเชิงซ้อน เราต้องแยกวิเคราะห์และทำการคูณจำนวนเชิงซ้อน จากนั้นส่งคืนผลลัพธ์เป็นสตริง

ดังนั้นหากอินพุตเป็นแบบ “1+-1i” และ “1+-1i” ผลลัพธ์จะเป็น “0+-2i”

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • aa :=คู่ของจำนวนจริงและจินตภาพของจำนวนเชิงซ้อนตัวแรก
  • bb :=คู่ของจำนวนจริงและจินตภาพของจำนวนเชิงซ้อนที่สอง
  • x :=aa.real * bb.real – aa.img*bb.img
  • y :=aa.real * bb.img + aa.img*bb.real
  • คืนค่าสตริงเป็น “x+yi”

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

#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"));
}

อินพุต

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

ผลลัพธ์

0+-2i