大数相乘

wei_xiaohui 2011-09-25 11:53:42
出错信息如下:
Expression:string subscript out of range
Code:
#include<iostream>
#include<string>
using namespace std;

string s;
int n;
string chengji(s.length()*n,'0');

string muling()
{
int i,j,k;
for(i=s.length()-1;i>=0;--i)
if(s[i])
{
for(j=s.length()-1,k=i+s.length();j>=0;--j,--k)
{
int temp=(s[i]-'0')*(s[j]-'0');
chengji[k-1]=char(chengji[k-1]-'0'+(chengji[k]-'0'+temp)/10);
chengji[k]=char(chengji[k]-'0'+temp%10);
}
}
return chengji.substr(chengji.find_first_not_of('0'));
}

int main()
{
//freopen("input.txt","r",stdin);
while(cin>>s>>n)
{
string result;
int i;
for(i=0;i<n;++i)
result=muling();
cout<<result<<endl;
}
return 0;
}
本人刚接触C++,请教高手,求解答,谢谢
...全文
177 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
SmartAlex_peng 2011-09-27
  • 打赏
  • 举报
回复
和楼上基本同解,chengji定义和调用有问题吧,还有s,n具体是什么内容?
chentao4669 2011-09-27
  • 打赏
  • 举报
回复

string s;
int n;
string chengji(s.length()*n,'0');


这个定义很有问题,s,和n,在你的这个函数这里s和n都是乱码。
不能这样定义。
main函数中的while这样写不行,推荐用一个标志位来控制一下循环的退出。
首先要输入的话用do....while循环来做吧。
mhsyl 2011-09-27
  • 打赏
  • 举报
回复
循环条件中,--i,--k,语句导致越界,改成i--,k--
wei_xiaohui 2011-09-27
  • 打赏
  • 举报
回复
麻烦哪位高手能够详细解释一下该程序出错的原因
wei_xiaohui 2011-09-27
  • 打赏
  • 举报
回复
这个出错信息是什么意思啊?
Expression:string subscript out of range
mengmingtao 2011-09-25
  • 打赏
  • 举报
回复
string chengji(s.length()*n,'0');
写到main函数里输入s和n之后~
mengmingtao 2011-09-25
  • 打赏
  • 举报
回复
s和chengji都是空字符串,你的大数是在哪里存的?
柯本 2011-09-25
  • 打赏
  • 举报
回复
有关大数运算,可以到我资源中下载
http://download.csdn.net/detail/keiy/2198401

64,681

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧