我试图创建一个生成没有双打的颜色代码的函数。我的尝试:
int random(int lowerbounds, int upperbounds)
{
return lowerbounds + rand() % (upperbounds - lowerbounds + 1);
}
enum Farbe { Red, Orange, Grey, Blue, Grey, White, Purple };
bool err;
int zahl;
Farbe Code[];
while(err)
{
for(int i = 0; i < 4; i++)
{
zahl = 0;
zahl = random(1, 7);
switch (zahl) {
case 1:
Code[i] = Red;
break;
case 2:
Code[i] = Orange;
break;
case 3:
Code[i] = Grey;
break;
case 4:
Code[i] = Blue;
break;
case 5:
Code[i] = Green;
break;
case 6:
Code[i] = White;
break;
case 7:
Code[i] = Purple;
break;
}
}
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
if(i != j)
{
if(Farbe[i] == Farbe[j]) // here is the Error
{
err = true;
}
}
}
}
}
但编译器总是返回错误
...cpp:72: error: expected primary-expression before '[' token
和
...cpp:72: error: expected primary-expression before ']' token
我认为这是一个非常简单的算法,但我不知道要解决。 有帮助吗?
答案 0 :(得分:3)
看起来您在生成错误的行中使用了Farbe
而不是Code
。它应该是:
if(Code[i] == Code[j])
答案 1 :(得分:2)
if(Farbe[i] == Farbe[j]) // here is the Error
{
err = true;
}
Farbe是枚举类型,不是数组变量。 你必须指的是Farbe
类型的可变code