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

Chương trình nhân hai chuỗi và trả về kết quả là chuỗi trong C ++

Giả sử chúng ta có hai số dưới dạng chuỗi. Chúng ta phải nhân chúng và trả về kết quả cũng ở dạng chuỗi. Vì vậy, nếu các số là "28" và "25", thì kết quả sẽ là "700"

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

  • Lấy hai đối số x và y, nó chỉ ra x chia cho y

  • nếu x <−Infinity và y =1, thì trả về vô cùng

  • a:=| x |, b:=| y | và ans:=0

  • trong khi a - b> =0

    • p:=0

    • trong khi a - (dịch sang trái b (dịch sang trái 1 p lần))> =0

      • p:=p + 1

    • a:=a - (dịch trái b, p lần)

    • ans:=ans + dịch trái 1 p lần

  • nếu x> 0 là đúng và y> 0 cũng đúng, thì trả về ans, ngược lại thì trả về (- ans)

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

Đầu vào

"28", "25"

Đầu ra

"700"