gpt4 book ai didi

c++ - 这个 bin-to-dec 代码有什么问题?

转载 作者:行者123 更新时间:2023-11-28 03:06:36 24 4
gpt4 key购买 nike

由于本学期我在物理学校学习了数字系统类(class),所以我决定尝试将我们在那里学到的知识应用到我自学的编程实践中。是的,出于某种原因我们根本不这样做。不管怎样,下面是我的代码:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
int num = 0;
int power = 0; // used to calculate the power of the digit later

vector<int> binVec; // holds binary value
vector<int> decVec; // holds converted dec value

cout << "Input binary number for conversion to its decimal...\n";

while (cin >> num)
{
binVec.push_back(num);
}


for (vector<int>::size_type i = 0; i<= binVec.size(); i++)
{
int temp;

temp = (binVec[i]*2)^power;
decVec.push_back(temp);

if (power = 0)
{
power = 2;
}

else
{
power = power * 2;
}
}

cout << "The decimal value is \n";

for (vector<int>::size_type j = 0; j<= decVec.size(); j++)
{
cout << decVec[j];
}

return 0;


}

不用说,它不会正常工作。一开始我犯了一些愚蠢的错误,但是现在我已经开始思考了大约半个小时,我得到了奇怪的输出。例如,当我输入简单的 (10)bin 并期望 (2)dec 时,我得到一串以 2 开头的数字,例如 20006721。此外,当程序运行时,我的编译器会发送一条错误消息。有什么问题吗?

我知道我的代码很烂而且没有得到很好的优化,所以任何反馈或批评将不胜感激!

最佳答案

你的 if 语句有错别字:

if (power = 0)

您需要使用 ==比较:

if (power == 0)

此外,在您的 for 循环中,您让它运行 1 次到多次:

i <= binVec.size();

数组的索引从 0 到 size - 1;这样做<= make 导致访问 vector 范围之外的地址的未定义行为。将其更改为:

i < binVec.size();

关于c++ - 这个 bin-to-dec 代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19529162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com