懒得多说,直接上代码
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<int> str_to_vec(const string &str)
{
vector<int> ivec;
for (int i = str.size()-1; i >= 0; i--)
{
ivec.push_back(static_cast<int>(str[i] - '0'));
}
return ivec;
}
string operator *(const string &lhs, const string &rhs)
{
const int lhs_size = lhs.size();
const int rhs_size = rhs.size();
vector<int> ivec_lhs = str_to_vec(lhs);
vector<int> ivec_rhs = str_to_vec(rhs);
vector<int> ivec_result(lhs_size+rhs_size, 0);
for (int i = 0; i < lhs_size; i++)
{
int k = i;
for (int j = 0; j < rhs_size; j++, k++)
{
ivec_result[k] += ivec_lhs[i] * ivec_rhs[j];
}
}
for (vector<int>::iterator iter = ivec_result.begin(); iter != ivec_result.end(); iter++)
{
if (*iter > 9)
{
*(iter+1) += *iter/10;
*iter %= 10;
}
}
vector<int>::iterator iter = ivec_result.end()-1;
while (*iter == 0)
{
ivec_result.pop_back();
iter = ivec_result.end()-1;
}
string str_result;
while (!ivec_result.empty())
{
char c = static_cast<char>(ivec_result.back()) + '0';
str_result.append(1, c);
ivec_result.pop_back();
}
return str_result;
}
int main()
{
string str_multiplicand;
string str_multiplier;
string str_result;
cout<<"Input the multiplicand:"<<endl;
cin>>str_multiplicand;
cout<<"Input the multiplier:"<<endl;
cin>>str_multiplier;
str_result = str_multiplicand * str_multiplicand;
cout<<str_multiplicand<<"*"<<str_multiplier<<"="<<str_result<<endl;
return 0;
}