📄 project1.cpp
字号:
cout << endl;
return ;
}
else //用辗转相除求结果
{
for(iter = num1.begin(),i = 0; i < len2 ;++i,++iter)
temp.push_back(*iter);
list<char> digit,res;
for(j = 0; j < 10; j++)
{
digit.clear();
digit.push_back(j + '0');
res = Mul(num2,digit);
res = Sub(temp,res);
if(*(res.begin()) == '-')
break;
}
//cout << endl;print(temp); cout << endl;
j -= 1;
if(j > 0)
{
digit.clear();
digit.push_back(j + '0');
temp = Sub(temp,num2);
ans.push_back(j + '0');
}
for(;iter != num1.end();++iter)
{
temp.push_back(*iter);
for(j = 0; j < 10; j++)
{
digit.clear();
digit.push_back(j + '0');
res = Mul(num2,digit);
res = Sub(temp,res);
if(*(res.begin()) == '-')
break;
}
//cout << endl;print(temp); cout << endl;
j -= 1;
digit.clear();
digit.push_back(j + '0');
res = Mul(num2,digit);
temp = Sub(temp,res);
ans.push_back(j + '0');
}
if(sign)
ans.push_front('-');
}
cout << "商是";
print(ans);
cout << ";余数是" ;
print(temp);
cout << endl;
return ;
}
void Root(list<char> num1) //求大数的平方根,用枚举算法暴力搜索算法求
{
list<char> ans;
int len1;
list<char> digit,temp;
len1 = num1.size();
int a = len1 / 2; //a是结果的最少位数
int i;
digit.push_back('1');
ans.push_back('1'); //从ans=10 ^ a 开始搜索
for(i = 0; i < a - 1; i++)
ans.push_back('0');
while(true) //搜到则结束
{
temp = Mul(ans,ans);
temp = Sub(num1,temp);
if(*(temp.begin()) == '-') //如果当前ans的平方大于num1,则得结果
break;
ans = Add(ans,digit);
}
ans = Sub(ans,digit);
print(ans);
cout << endl;
}
list<char> translate(string input)
{
list<char> res;
int len = input.length();
for(int i = 0; i < len; i++)
res.push_back(input[i]);
return res;
}
void print(list<char> ans)
{
list<char>::iterator iter;
int flag = 1;
iter = ans.begin();
if(*iter == '-')
{
cout << *iter;
iter++;
}
for(;iter != ans.end(); ++iter)
{
if(*iter == '0' && flag)
continue;
//cout << (*iter);
else
{
flag = 0;
cout << (*iter);
}
}
if( flag == 1)
cout << 0 ;;
//cout << endl;
}
int main()
{
char choice; //选择要进行的运算
list<char> num1;
list<char> num2;
list<char> res;
string input;
while(true)
{
cout << endl;
printhelp();
cin >> choice;
switch(choice)
{
case '1': //如果选择加法运算
cout << "请输入第一个数" << endl;
cin >> input;
num1 = translate(input);
cout << "请输入第二个数" << endl;
cin >> input;
num2 = translate(input);
res = Add(num1,num2);
print(num1);
cout << " + " ;
print(num2);
cout << " = ";
print(res);
cout << endl;
break;
case '2': //选择减法运算
cout << "请输入第一个数" << endl;
cin >> input;
num1 = translate(input);
cout << "请输入第二个数" << endl;
cin >> input;
num2 = translate(input);
res = Sub(num1,num2);
print(num1);
cout <<" - " ;
print(num2);
cout << " = ";
print(res);
cout << endl;
break;
case '3': //选择乘法运算
cout << "请输入第一个数" << endl;
cin >> input;
num1 = translate(input);
cout << "请输入第二个数" << endl;
cin >> input;
num2 = translate(input);
res = Mul(num1,num2);
print(num1);
cout <<" * " ;
print(num2);
cout << " = ";
print(res);
cout << endl;
break;
case '4': //选择除法运算
cout << "请输入第一个数" << endl;
cin >> input;
num1 = translate(input);
cout << "请输入第二个数" << endl;
cin >> input;
num2 = translate(input);
print(num1);
cout << " / " ;
print(num2);
cout << " = ";
if(num2.size() == 1 && (*(num2.begin()) == '0'))
{
cout << "divided zero error" << endl;
break;
}
Div(num1,num2);
//print(res);
cout << endl;
break;
case '5': //选择求根运算
cout << "请输入第一个数" << endl;
cin >> input;
num1 = translate(input);
if(*(num1.begin()) == '-')
{
cout << "负数没有实数平方根" << endl;
break;
}
Root(num1);
break;
case '6':
return 0;
default:
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -