当前位置: 技术问答>linux和unix
急寻??Linux or Unix 下BC计算器的源码
来源: 互联网 发布时间:2015-09-21
本文导语: 本人的毕业设计论文是大整数的计算以及素数库的建立,苦于实习没有时间去忙了. 以前搞linux的时候知道bc计算器能进行大整数的运算(只要+ - * /) 希望哪位资源丰富的能帮忙.谢谢. | double bc(char *char...
本人的毕业设计论文是大整数的计算以及素数库的建立,苦于实习没有时间去忙了.
以前搞linux的时候知道bc计算器能进行大整数的运算(只要+ - * /)
希望哪位资源丰富的能帮忙.谢谢.
以前搞linux的时候知道bc计算器能进行大整数的运算(只要+ - * /)
希望哪位资源丰富的能帮忙.谢谢.
|
double bc(char *char_in,char *CHR_ERR)
//char *char_in; /*输入值,算术表达式*/
//char *Int_err; /*返回信息,计算正确=空;若有错误=具体错误消息*/
{
char *STR_ALL;
char t[256];
char __CP_Data[256];
char ep[256];
char e;
int FLAG_I;
int j;
int k;
int p;
int q;
int c;
int xs;
int Int_err;
double np[256];
double a;
double w;
double f;
Int_err=0;
// *CHR_ERR='';
strcpy(t,char_in);
STR_ALL=t;
FLAG_I=0;
while((e=*(STR_ALL+FLAG_I++))!='')
{
if(e=='(' && *(STR_ALL+FLAG_I)=='-')
{
*(STR_ALL+FLAG_I)=':';
}
}
c=0;
FLAG_I=0;
q=0;
np[1]=0.0;
/*置栈底标志@*/
__CP_Data[0]='@';
/*====扫描表达式,压入栈中====*/
while(Int_err==0 && *STR_ALL!='')
{
if(*STR_ALL=='-' && (q==0 || *(STR_ALL-1)=='('))
{
*STR_ALL=':';
}
e=*(STR_ALL+1);
switch(*STR_ALL)
{
case '(':
if((e':') && e!='-' && e!='(')
{
Int_err=1;
}
else
{
__CP_Data[++c]=*STR_ALL;
}
break;
case ')':
if(e!='+' && e!='-' && e!='*' && e!='/' && e!=')' && e!='')
{
Int_err=1;
}
else
{
while(__CP_Data[c]!='(')
{
ep[FLAG_I++]=__CP_Data[c--];
}
c--;
if(c0)
{
for(p=0;p