求助C++高手
求C++的高手!
为什么我的这个程序编译没错,但是不能运行,总是弹出窗口:出现一个问题,导致程序停止正常工作。(我用Cfree)编的!
[code=C/C++][/code]
#include<iostream>
#include<cmath>
#include<stdexcept>
#include<cctype>
#include<typeinfo>
using namespace std;
int parsebinary(const char * const binarystring) ;
int main()
{
cout<<"请输入二进制字符串:"<<endl;
char binarystring[100];
cin.getline(binarystring,100);
try
{
for(int i=0;i<strlen(binarystring);i++)
{
if(binarystring[i]!=48&&binarystring[i]!=49)
throw runtime_error("你所输入的不是二进制字符串!");
}
cout<<"对应的十进制字符串:";
cout<<parsebinary (binarystring)<<endl;
}
catch(runtime_error &k)
{
cout<<k.what()<<endl;
cout<<typeid(k).name()<<":";
}
return 0;
}
int parsebinary(const char * const binarystring)
{
char *copy;
int sum=0;
for(int j=0;j<strlen(binarystring);j++)
{
copy[j]=binarystring[j]-48;
}
for(int i=0,n=strlen(binarystring)-1;i<strlen(binarystring);i++,n--)
{
sum +=pow(2.0,n)*copy[i];
}
return sum;
}
[解决办法]
在debug模式下调试运行,出错后查看堆栈.
[解决办法]
#include<iostream>
#include<cmath>
#include<stdexcept>
#include<cctype>
#include<typeinfo>
using namespace std;
double parsebinary(const char * const binarystring) ;
int main()
{
cout<<"请输入二进制字符串:"<<endl;
char binarystring[100];
cin.getline(binarystring,100);
try
{
for(unsigned int i=0;i<strlen(binarystring);i++)
{
if(binarystring[i]!=48&&binarystring[i]!=49)
throw runtime_error("你所输入的不是二进制字符串!");
}
cout<<"对应的十进制字符串:";
cout<<parsebinary (binarystring)<<endl;
}
catch(runtime_error &k)
{
cout<<k.what()<<endl;
cout<<typeid(k).name()<<":";
}
return 0;
}
double parsebinary(const char * const binarystring)
{
int len = strlen(binarystring);
char *copy = new char[len+1]; //用动态分配内存,你那个做法会得到一个野指针。
double sum=0;
for(unsigned int j=0;j<strlen(binarystring);j++)
{
copy[j]=binarystring[j]-48;
}
for( int i=0, n=len-1;i<len;i++,n--)
{
sum +=pow(2.0,n)*copy[i];
}
return sum;
}
//打红色是本人自己的改进,望有用!
[解决办法]
问楼猪和楼上一个问题。。你们的变量n [color=#00FF00]从哪来的。。[/color]
[解决办法]