黑马程序员技术交流社区

标题: 怎样用数组实现高位乘方 [打印本页]

作者: fanxing    时间: 2015-6-16 11:46
标题: 怎样用数组实现高位乘方
比如说R^n(0 < R < 99.999, 0 < n <= 25)
作者: tabor    时间: 2015-6-16 12:46
数组只是存储数据,你的意思是说: 第n个地址存储R^n?
作者: 丁铭检    时间: 2015-6-16 13:17
道理类似,从低位到高位做个循环,加法注意是否越界,越界则向上进位;减法则注意减数与被减数关系,小于则借位。   一种实现,你可以参考一下。  void add(char a[],char b[],int x,int y,int f,int d)  {  char c[102];  int i;  int j;  int jin=0;  int s=0;  int m,ma;  int xx,yy;       if(d==0)  {     xx=0;yy=0;  }  if(d==1)  {     xx=1;yy=0;  }      if(d==2)  {     xx=0;yy=1;  }  if(d==3)  {     xx=1;yy=1;  }       x>y?m=x:m=y;     ma=m;     i=x-1;     j=y-1;  for(;m>0;i--,j--,m--)  {      if(j<yy && i>=xx)      s=int(a[i])-48+jin;     //将字符转换成整型     else if(i<xx && j>=yy)      s=int(b[j])-48+jin;     else if(i>=xx && j>=yy)      s=(int(a[i])-48+int(b[j])-48+jin);       if(s>9)     {      jin=1;      c[m]=char(s+38);     }     else     {      jin=0;      c[m]=char(s+48);     }  }  if(jin==1)     c[0]='1';  else     c[0]=' ';  if(g==1)  {      cout<<"两数相加的结果为:";      if(f==0)        for(i=0;i<ma+1;i++)              cout<<c[i];      else      {        cout<<'-';       for(i=0;i<ma+1;i++)                 cout<<c[i];      }  }  if(g==2)  {     cout<<"两数相减的结果为:";     if(f==0)      for(i=0;i<ma+1;i++)       cout<<c[i];     else     {      cout<<'-';      for(i=0;i<ma+1;i++)       cout<<c[i];     }  }  cout<<endl;  }  //                                 减函数  void jian(char a[],char b[],int x,int y,int f,int d)  {      char c[102];  int i;  int j;  int jin=0;  int s=0;  int m,ma;  int xx,yy;      if(d==0)  {     xx=0;yy=0;  }  if(d==1)  {     xx=1;yy=0;  }      if(d==2)  {     xx=0;yy=1;  }  if(d==3)  {     xx=1;yy=1;  }       m=x-1;     ma=m;     i=x-1;     j=y-1;  for(;m>=0;i--,j--,m--)      {      if(j<yy&&i>=xx)      s=int(a[i])-48-jin;     else if(i>=xx&&j>=yy)      s=(int(a[i])-48)-(int(b[j])-48)-jin;       if(s<0)     {      jin=1;      c[m]=char(s+58);     }     else     {      jin=0;      c[m]=char(s+48);     }  }  if(g==1)  {      cout<<"两数相加的结果为:";      if(f==0)        for(i=0;i<ma+1;i++)              cout<<c[i];      else      {        cout<<'-';       for(i=0;i<ma+1;i++)                 cout<<c[i];      }  }  if(g==2)  {     cout<<"两数相减的结果为:";     if(f==0)      for(i=0;i<ma+1;i++)       cout<<c[i];     else     {      cout<<'-';      for(i=0;i<ma+1;i++)       cout<<c[i];     }  }  cout<<endl;  }
作者: fanxing    时间: 2015-6-20 12:58
tabor 发表于 2015-6-16 12:46
数组只是存储数据,你的意思是说: 第n个地址存储R^n?

我的意思是说用数组实现像99*99这种乘方运算,只不过位数有点大,不能用编译器的乘法,只能自己用数组实现乘方
作者: tabor    时间: 2015-6-21 00:01
那就直接OC用自己写个方法结了
作者: 丁铭检    时间: 2015-6-21 10:22
这种东西都是用数组来弄。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2