【发布时间】:2011-11-25 01:26:36
【问题描述】:
这是一个非常简单的问题;第一次发布海报,长期观看。
这是我写的二进制到十进制转换器:
#include <iostream>
#include <cmath>
using namespace std;
const int MAX = 6;
int conv(int z[MAX], int l[6], int MAX);
int main()
{
int zelda[MAX];
const int d = 6;
int link[d];
cout << "Enter a binary number: \n";
int i = 0;
while (i < MAX && (cin >> zelda[i]).get()) //input loop
{
++i;
}
cout << conv(zelda, link, MAX);
cin.get();
return 0;
}
int conv(int zelda[MAX], int link[6], int MAX)
{
int sum = 0;
for (int t = 0; t < MAX; t++)
{
long int h, i;
for (int h = 5, i = 0; h >= 0; --h, ++i)
if (zelda[t] == 1)
link[h] = pow(2.0, i);
else
link[h] = 0;
sum += link[t];
}
return sum;
}
由于处理输入循环的方式,我必须在每次输入数字后按回车键。我还没有添加任何错误更正(我的一些变量是模糊的),但想输入一个二进制,比如 111111 而不是 1 enter、1 enter、1 enter 等来填充数组。我对任何技术和其他建议持开放态度。也许将其输入为字符串并将其转换为 int?
我会继续研究。谢谢。
【问题讨论】:
-
你的变量命名是最有趣的。
-
你的整个输入逻辑非常晦涩难懂。您为什么不简单地读取 one 字符串,预计仅包含
1s 和0s,然后将其转换? -
最佳变量命名法,EVAR :)(必须发表此评论 :))
-
感谢各位程序员。老实说,我没有多想-_-
-
你应该在 masterSword 中返回你的总和。
标签: c++