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

โปรแกรมคูณสองสตริงและส่งคืนผลลัพธ์เป็นสตริงใน C++


สมมติว่าเรามีตัวเลขสองตัวเป็นสตริง เราต้องคูณมันและส่งคืนผลลัพธ์เป็นสตริงด้วย ดังนั้นหากตัวเลขเป็น “28” และ “25” ผลลัพธ์จะเป็น “700”

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

  • รับสองอาร์กิวเมนต์ x และ y มันบ่งชี้ว่า x หาร y

  • ถ้า x <−Infinity และ y =1 ให้คืนค่าอนันต์

  • a :=|x|, b :=|y| และคำตอบ :=0

  • ในขณะที่ a − b>=0

    • p :=0

    • ในขณะที่ a − (เลื่อนซ้าย b (เลื่อนซ้าย 1 p ครั้ง))>=0

      • p :=p + 1

    • a :=a − (เลื่อนซ้าย b, p ครั้ง)

    • ans :=ans + shift ซ้าย 1 p ครั้ง

  • ถ้า x> 0 เป็นจริง และ y> 0 เป็นจริงด้วย ให้คืนค่า ans มิฉะนั้น ให้คืนค่า (− ans)

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

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   string multiply(string num1, string num2);
};
string Solution::multiply(string nums1, string nums2) {
   int n = nums1.size();
   int m = nums2.size();
   string ans(n + m, '0');
   for(int i = n - 1; i>=0; i−−){
      for(int j = m - 1; j >= 0; j−−){
         int p = (nums1[i] − '0') * (nums2[j] − '0') + (ans[i + j +
         1] − '0');
         ans[i+j+1] = p % 10 + '0';
         ans[i+j] += p / 10 ;
      }
   }
   for(int i = 0; i < m + n; i++){
      if(ans[i] !='0')return ans.substr(i);
   }
   return "0";
}
main(){
   Solution ob;
   cout << ob.multiply("28", "25");
}

อินพุต

"28", "25"

ผลลัพธ์

"700"