Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基本转换器功能的问题 我正在帮助一个C++任务的朋友。以下基本转换器功能存在问题: #include <iostream> #include <cmath> using namespace std; int strToInt(string num, unsigned base){ int result = 0; for (int i=0; i<num.length(); i++) { if (num[i]>='0' && num[i]<='9') result += (num[i]-'0')*pow(base,num.length()-i-1); else if (num[i]>='A' && num[i]<='F') result += (num[i]-'A'+10)*pow(base,num.length()-i-1); else if (num[i]>='a' && num[i]<='f') result += (num[i]-'a'+10)*pow(base,num.length()-i-1); } return result; } int main() { string number; int base; while(number.compare("exit")!=0){ cin>>number; cin>>base; cout<<strToInt(number,base)<<"\n\n"; } return 0; }_C++ - Fatal编程技术网

基本转换器功能的问题 我正在帮助一个C++任务的朋友。以下基本转换器功能存在问题: #include <iostream> #include <cmath> using namespace std; int strToInt(string num, unsigned base){ int result = 0; for (int i=0; i<num.length(); i++) { if (num[i]>='0' && num[i]<='9') result += (num[i]-'0')*pow(base,num.length()-i-1); else if (num[i]>='A' && num[i]<='F') result += (num[i]-'A'+10)*pow(base,num.length()-i-1); else if (num[i]>='a' && num[i]<='f') result += (num[i]-'a'+10)*pow(base,num.length()-i-1); } return result; } int main() { string number; int base; while(number.compare("exit")!=0){ cin>>number; cin>>base; cout<<strToInt(number,base)<<"\n\n"; } return 0; }

基本转换器功能的问题 我正在帮助一个C++任务的朋友。以下基本转换器功能存在问题: #include <iostream> #include <cmath> using namespace std; int strToInt(string num, unsigned base){ int result = 0; for (int i=0; i<num.length(); i++) { if (num[i]>='0' && num[i]<='9') result += (num[i]-'0')*pow(base,num.length()-i-1); else if (num[i]>='A' && num[i]<='F') result += (num[i]-'A'+10)*pow(base,num.length()-i-1); else if (num[i]>='a' && num[i]<='f') result += (num[i]-'a'+10)*pow(base,num.length()-i-1); } return result; } int main() { string number; int base; while(number.compare("exit")!=0){ cin>>number; cin>>base; cout<<strToInt(number,base)<<"\n\n"; } return 0; },c++,C++,在过去的5-6个小时里,我一直在检查这个函数,并添加了所有类型的调试代码,但为了我的利益,我无法找出到底是什么问题 代码风格的评论也非常受欢迎 干杯std::pow做浮点运算。您可能在某个地方遇到了舍入错误。累积值的常用方法是每次通过循环进行乘法和加法: result *= base; result += ch - '0'; std::pow进行浮点运算。您可能在某个地方遇到了舍入错误。累积值的常用方法是每次通过循环进行乘法和加法: result *= base; result += ch -

在过去的5-6个小时里,我一直在检查这个函数,并添加了所有类型的调试代码,但为了我的利益,我无法找出到底是什么问题

代码风格的评论也非常受欢迎


干杯

std::pow
做浮点运算。您可能在某个地方遇到了舍入错误。累积值的常用方法是每次通过循环进行乘法和加法:

result *= base;
result += ch - '0';

std::pow
进行浮点运算。您可能在某个地方遇到了舍入错误。累积值的常用方法是每次通过循环进行乘法和加法:

result *= base;
result += ch - '0';

@关于这个神奇的数字,我有一个很好的观点。更具可读性。但是,我看不出==和compare()之间有任何区别。测试返回值是什么意思?验证?这不是任务的要求。感谢您的反馈。您是否尝试过使用调试器单步执行代码?调试器是当代码行为不正确时使用的工具;通过你的输入,我得到100-10-100和10000-10-10000你使用一些非常旧的编译器吗?还是具有软件模拟浮点的目标平台?第一个疑点是将pow返回值四舍五入为int,但这对我来说效果很好。我使用的是代码块附带的mingw。如果这个数字很老的话,你也不会感到惊讶。关于这个神奇的数字,我有一个很好的观点。更具可读性。但是,我看不出==和compare()之间有任何区别。测试返回值是什么意思?验证?这不是任务的要求。感谢您的反馈。您是否尝试过使用调试器单步执行代码?调试器是当代码行为不正确时使用的工具;通过你的输入,我得到100-10-100和10000-10-10000你使用一些非常旧的编译器吗?还是具有软件模拟浮点的目标平台?第一个疑点是将pow返回值四舍五入为int,但这对我来说效果很好。我使用的是代码块附带的mingw。如果它很旧,也不会感到惊讶。是的,更优雅的解决方案,谢谢!是的,更优雅的解决方案,谢谢!