C++ 如何在阵列中获取特定的用户输入?

C++ 如何在阵列中获取特定的用户输入?,c++,arrays,c++11,c++14,C++,Arrays,C++11,C++14,我正在编写一个程序,通过加倍将二进制数转换为十进制数 如果用户输入不是1或0,那么它不是一个二进制数,在这种情况下,我希望循环中断并说: 哎呀!二进制数只有1或0 如果没有,那么循环应该继续 这就是我想要的代码 forint数字=0;数字!=洋地黄++数字{ ifa检查用户输入是否不是1或0的条件{ 通过倍增法将二进制数转换为十进制数的逻辑可以从问题中给出的公式中引用 修改给定代码,使其尽可能接近问题的参考代码 注:由于ISO C++禁止可变长度数组,我正在改变。 int二进制数组[位数]到 i

我正在编写一个程序,通过加倍将二进制数转换为十进制数

如果用户输入不是1或0,那么它不是一个二进制数,在这种情况下,我希望循环中断并说:

哎呀!二进制数只有1或0

如果没有,那么循环应该继续

这就是我想要的代码

forint数字=0;数字!=洋地黄++数字{ ifa检查用户输入是否不是1或0的条件{
通过倍增法将二进制数转换为十进制数的逻辑可以从问题中给出的公式中引用

修改给定代码,使其尽可能接近问题的参考代码

注:由于ISO C++禁止可变长度数组,我正在改变。 int二进制数组[位数]到 int*binArray=int*mallocsizeofint*digitsinnum;。 此修改使其成为整数指针,并在运行时获得所需大小的内存分配

包括 使用名称空间std; int main{ int DIGITSINNUM, /*变量来保持给定二进制的十进制转换*/ 十进制值=0; bool是_binary=true; 金合欢; /* ISO C++禁止可变长度数组, 使其成为int指针并分配动态内存 */ int*binArray=int*mallocsizeofint*digitsinnum; 如果二进制数组==NULL {
cout这不需要数组。下面是一个简单的解决方案:

#include <iostream>

int main(){
    int digitsINbinNum;
    std::cout << "If you don't mind. Please enter the number of digits in your binary number: ";
    std::cin >> digitsINbinNum;

    std::cout << "Enter the binary number: ";
    int ret = 0;
    for(int digits = 0; digits != digitsINbinNum; ++digits) {
        int bin;
        std::cin >> bin;
        if (bin == 1 || bin == 0) {
            ret = 2 * ret + bin;
        } else {
            std::cout << "Oops! Binary numbers have only 1 or 0" << std::endl;
            return -1;
        }
    }
    std::cout << ret << std::endl;

    return 0;
}

使用STD::vector替代?int BINARDATA [DigiSimBNNUM];不是标准C++。ῥεῖ 我使用C++ 14,在IIN中,我的意思是数组的大小是由用户提供的。这对于C++ 14没有改变。VLAs没有把它变成标准。你在使用BestBuffic的扩展。警告:ISO C++禁止可变长度数组“BiAlnal'”[-Wvla ]。你会编辑这个答案来解释它是如何回答这个问题的吗?其他的用户也同样喜欢这个材料,因为它帮助他们学习。@ PHIZ感谢你指出。我已经修改了采用ISO C++标准的答案。D是自解释的。谢谢你指出它。C++中的MaloC没有相应的自由,它的方式比VLAs还要差。你能解释一下返回1的用法吗?这仍然存在于OP代码中的bug,其中STD::CIN > bin;将读取整个数字并将其解释为十进制整数,而只需要第一个数字。@ JayedYeameen从main返回的值不是0通常表示运行时错误。@AlexanderZhang用户输入必须是0或1。因此用户必须在一行中输入每个数字,然后换行。这就是我对问题的理解。