C ++程序输出中的次序列错误

时间:2011-08-03 07:31:13

标签: c++

我正在尝试为插入的任何二进制数输出“状态”(对于每个0,它输出1和最大之间的随机数),例如10100应该输出2,1和1之间的随机数。 2,3,1和1之间的随机数3,1和1之间的随机数3.看起来像21323或223212或21313等。但我的程序给我的输出是23456 - 为什么?

int main()
{
    char binaryArray [0];
    int c1=1;
    int c0=0;
    int i=0;
    int n;

    cout << "Enter length of binary: "; //Length = total number of 1s & 0s
    cin >> n; 

    cout << "Enter binary number: ";
    cin >> binaryArray;

    cout << "States: ";

    for(i; i<n; i++)
    {
        if(binaryArray[i]=1)
        {
            c1++;
            cout << c1;
        }
        else if(binaryArray[i]=0)
        {
            c0++;
            cout << rand()%c1+1;  
        }
        /* if(c0 > c1)
        {
        cout << "Invalid Binary Representation.\n" << endl;
        exit(0); 
        } */
    }

    system("PAUSE");
    return 0;
}

2 个答案:

答案 0 :(得分:3)

当你有一个0(即零)字符的数组时,你不能在其中保存任何,甚至不能保存一个位。使该数组“足够大”(无论对您意味着什么)或更好地使用std::string

哦,并在启用所有编译器警告的情况下编译代码。当您正确理解并修复所有这些警告后,您的程序应该更好地工作。 (提示:在条件内分配)

答案 1 :(得分:0)

首先,您在if语句中进行了分配。使用==代替=

其次,如果您希望将数字作为二进制输入并存储在char数组中,请在比较时使用char。因此,您的if语句应为:

//                vvvvvvv   
if( binaryArray[i] == '1' )
{
    c1++;
    cout << c1;
}
//                     vvvvvvv
else if( binaryArray[i] == '0' )
{
    c0++;
    cout << rand()%c1+1;  
}

第三,改变数组的大小:

char binaryArray [0];

这里必须不是0。改变它更常见的东西。比如512,例如,如果您认为这将足够大。