Chuỗi có thể được nhân lên trong C không?

Trong chương trình này, chúng ta sẽ nhân hai chuỗi trong C++. Chúng tôi sẽ không sử dụng bất kỳ chức năng tích hợp nào để chuyển đổi một chuỗi thành một số nguyên

Điều kiện tiên quyết

  • vòng lặp
  • thêm chuỗi

đầu ra

Đầu vào. num1 = “80”, num2 = “2”
Đầu ra. “160”

Nhân chuỗi trong C++

Trong chương trình này, chúng tôi đã thực hiện phép nhân đơn giản của hai chuỗi. Chúng tôi chọn ký tự cuối cùng của số thứ hai và nhân nó với mỗi ký tự của số đầu tiên và đẩy kết quả phép nhân đó vào một vectơ tổng. Sau đó, chúng tôi thực hiện phép cộng tất cả các chuỗi trong vectơ tổng

#include 
using namespace std;
class Solution
{
public:
string addStrings[string &num1, string &num2]
{
int n = num1.size[] - 1;
int m = num2.size[] - 1;
string s;
int carry = 0;
int x1, x2, value;
while [n >= 0 || m >= 0]
{
if [n >= 0]
{
x1 = num1[n] - '0';
}
else
x1 = 0;
if [m >= 0]
{
x2 = num2[m] - '0';
}
else
x2 = 0;

value = [x1 + x2 + carry] % 10;
carry = [x1 + x2 + carry] / 10;
s.push_back[value + '0'];
n--;
m--;
}
if [carry != 0]
s.push_back[carry + '0'];
reverse[s.begin[], s.end[]];
return s;
}
string multiply[string num1, string num2]
{
vector sum;

int m = num2.size[] - 1;
int last = 0;
while [m >= 0]
{
string s;
int carry = 0;
int x1, x2, value;
int n = num1.size[] - 1;
while [n >= 0]
{
x1=num1[n]-'0';
x2=num2[m]-'0';

value = [x1 * x2 + carry] % 10;
carry = [x1 * x2 + carry] / 10;
s.push_back[value + '0'];
n--;
}
if [carry != 0]
s.push_back[carry + '0'];

reverse[s.begin[], s.end[]];
int temp = last;
while [temp--]
s.push_back['0'];
last++;
sum.push_back[s];
m--;
}
string ans = "0";
for [auto str : sum]
{
ans = addStrings[ans, str];
}

if [ans[0] == '0']
{
int i = 1;
while [i < ans.size[] && ans[i] == '0']
{
ans.erase[ans.begin[] + i];
// i++;
}
}

return ans;
}
};
int main[]
{
Solution s;
string str1,str2;
coutstr1;
coutstr2;
cout

Chủ Đề