一道C++题,我哪错了?
来源:百度知道 编辑:UC知道 时间:2024/06/08 10:36:13
txt文件中每一行都是一个二进制数,不超过64位,不超过3000个,遇到-1停止。
从txt中提取每行的数转换成十进制,然后输出换行。
#include<iostream>
#include<fstream>
#include<sstream>
#include<cmath>
using namespace std;
string str;
long double sum=0;
void main(){
ifstream in("change.txt");
for(int j=0; getline(in,str)||j<3000;sum=0,j++){
if(str=="-1") break;
for (int a=0;a<str.length();a++){
if(str[a]==1)
sum+=pow(2,str.length()-a-1);
}
cout<<sum<<endl;
}
}
怎么输出全是零?
从txt中提取每行的数转换成十进制,然后输出换行。
#include<iostream>
#include<fstream>
#include<sstream>
#include<cmath>
using namespace std;
string str;
long double sum=0;
void main(){
ifstream in("change.txt");
for(int j=0; getline(in,str)||j<3000;sum=0,j++){
if(str=="-1") break;
for (int a=0;a<str.length();a++){
if(str[a]==1)
sum+=pow(2,str.length()-a-1);
}
cout<<sum<<endl;
}
}
怎么输出全是零?
#include<iostream>
#include<fstream>
#include<sstream>
#include<cmath>
using namespace std;
string str;
long double sum=0;
void main(){
ifstream in("change.txt");
for(int j=0; getline(in,str)||j<3000;sum=0,j++){
if(str=="-1") break;
for (int a=0;a<str.length();a++){
if(str[a]=='1') // 这里应该是判断字符'0','1',而不是整数0,1
sum+=pow(2,str.length()-a-1);
}
cout<<sum<<endl;
}
}
if(str[a]==1)
这个判断错了,改成if(str[a]-'0'==1)就可以了