A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fanxing 中级黑马   /  2015-6-16 11:46  /  1109 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

比如说R^n(0 < R < 99.999, 0 < n <= 25)

5 个回复

正序浏览
这种东西都是用数组来弄。。
回复 使用道具 举报
那就直接OC用自己写个方法结了
回复 使用道具 举报
tabor 发表于 2015-6-16 12:46
数组只是存储数据,你的意思是说: 第n个地址存储R^n?

我的意思是说用数组实现像99*99这种乘方运算,只不过位数有点大,不能用编译器的乘法,只能自己用数组实现乘方
回复 使用道具 举报
道理类似,从低位到高位做个循环,加法注意是否越界,越界则向上进位;减法则注意减数与被减数关系,小于则借位。   一种实现,你可以参考一下。  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;  }
回复 使用道具 举报
数组只是存储数据,你的意思是说: 第n个地址存储R^n?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马