帮忙简化一个if条件语句

绿豆蛙2013 2009-02-17 03:13:58
if(((m[0]!=0)&&(m[1]!=0)&&(m[2]!=0)&&(m[3]!=0)&&(m[4]!=0)&&(m[5]!=0)&&(m[6]!=0)&&(m[7]!=0)&&(m[8]!=0)&&(m[9]!=0))&&((m[0]!=1)&&(m[1]!=1)&&(m[2]!=1)&&(m[3]!=1)&&(m[4]!=1)&&(m[5]!=1)&&(m[6]!=1)&&(m[7]!=1)&&(m[8]!=1)&&(m[9]!=1))&&((m[0]==2)||(m[1]==2)||(m[2]==2)||(m[3]==2)||(m[4]==2)||(m[5]==2)||(m[6]==2)||(m[7]==2)||(m[8]==2)||(m[9]==2)))
其实很好理解,就是当m[10]中不能有等于1或2的,而且m[10]中必须有一个为0,我不知道该怎么简化它了,劳烦大家帮帮忙

...全文
225 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2009-02-18
  • 打赏
  • 举报
回复

int validate(int a[])
{
int i;

for(i = 0; i < 10; i++)
if(a[i] == 1 || a[i] == 2)
return 0;

for(i = 0; i < 10; i++)
if(a[i] == 0)
return 1;

return 0;
}
jimofengxiao 2009-02-17
  • 打赏
  • 举报
回复
上面还是写的不能有1和2,但必须有0的
jimofengxiao 2009-02-17
  • 打赏
  • 举报
回复
bool b1(flase);
bool b2(true);
for(int i(0); i<10; ++i)
{
if(a[i]==0)
{
b1 = true;
}
else if(a[i]==1 || a[i]==2)
{
b2 = flase;
break;
}
}
if(b1 && b2)
nullah 2009-02-17
  • 打赏
  • 举报
回复
up
jiweihong 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lgccaa 的回复:]
C/C++ code

for(int i=0, int sign = 0; i < 10; i++)
{
if((a[i] == 0) && (a[i] == 1))
sign = 0;
break;
else if(a[i] == 2)
sign = 1;
}
if(sign)
…………
[/Quote]
if((a[i] == 0) ||(a[i] == 1))
lgccaa 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 bopizi 的回复:]
上面错了
就是当m[10]中不能有等于1或2的,而且m[10]中必须有一个为0
BOOL bTemo = FALSE;
for(i...)
{
if(m[i]==1||m[i]==2)
break;
if(m[i]==0)
bTemp=TRUE;
}
if(bTemp)
//执行你的程序
[/Quote]
这个还是有问题,在
if(m[i]==1||m[i]==2)
break;
中间要加个bTemp=FALSE;因为如果m[0]=0;的话,bTemp就被设置为TRUE,就算后面的有等于1的跳出来后bTemp还是为TRUE,不符合题意
lgccaa 2009-02-17
  • 打赏
  • 举报
回复


for(int i=0, int sign = 0; i < 10; i++)
{
if((a[i] == 0) && (a[i] == 1))
sign = 0;
break;
else if(a[i] == 2)
sign = 1;
}
if(sign)
…………

bopizi 2009-02-17
  • 打赏
  • 举报
回复
上面错了
就是当m[10]中不能有等于1或2的,而且m[10]中必须有一个为0
BOOL bTemo = FALSE;
for(i...)
{
if(m[i]==1||m[i]==2)
break;
if(m[i]==0)
bTemp=TRUE;
}
if(bTemp)
//执行你的程序
bopizi 2009-02-17
  • 打赏
  • 举报
回复
就是当m[10]中不能有等于1或2的,而且m[10]中必须有一个为0
BOOL bTemo = FALSE;
for(i...)
{
if(m[i]==1||m[i]==2)
break;
if(m[i]==0)
{
bTemp=TRUE;
break;
}
}
if(bTemp)
//执行你的程序
mskmc_mc 2009-02-17
  • 打赏
  • 举报
回复
声明一个迭代器,指向数组m
从头到尾把m进行迭代
与0-2进行比较
绿豆蛙2013 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 mskmc_mc 的回复:]
....::iterator iter=m.begin();
for(;iter!=m.end();++iter)
{
for(int i=0;i <3;++i)
if(*iter!=i)
//....
else //....
}
[/Quote]
看不懂噢
mskmc_mc 2009-02-17
  • 打赏
  • 举报
回复
....::iterator iter=m.begin();
for(;iter!=m.end();++iter)
{
for(int i=0;i<3;++i)
if(*iter!=i)
//....
else //....
}
绿豆蛙2013 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 CA_HA_M 的回复:]
更正:数组元素不能等于0和1,但至少有一个元素等于2
[/Quote]
是我说错了,表达式是正确的
CA_HA_M 2009-02-17
  • 打赏
  • 举报
回复
更正:数组元素不能等于0和1,但至少有一个元素等于2
CA_HA_M 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 lzh19840809 的帖子:]
if(((m[0]!=0)&&(m[1]!=0)&&(m[2]!=0)&&(m[3]!=0)&&(m[4]!=0)&&(m[5]!=0)&&(m[6]!=0)&&(m[7]!=0)&&(m[8]!=0)&&(m[9]!=0))&&((m[0]!=1)&&(m[1]!=1)&&(m[2]!=1)&&(m[3]!=1)&&(m[4]!=1)&&(m[5]!=1)&&(m[6]!=1)&&(m[7]!=1)&&(m[8]!=1)&&(m[9]!=1))&&((m[0]==2)||(m[1]==2)||(m[2]==2)||(m[3]==2)||(m[4]==2)||(m[5]==2)||(m[6]==2)||(m[7]==2)||(m[8]==2)||(m[9]==2)))
其实很好理解,就是当m[10]中不能有等于1或2的,而且m[10]中必…
[/Quote]
是你说错了还是表达式错了,按照表达式看,应该是数组元素不能等于0和1,但至少有一个元素等于0
绿豆蛙2013 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 lzh19840809 的帖子:]
if(((m[0]!=0)&&(m[1]!=0)&&(m[2]!=0)&&(m[3]!=0)&&(m[4]!=0)&&(m[5]!=0)&&(m[6]!=0)&&(m[7]!=0)&&(m[8]!=0)&&(m[9]!=0))&&((m[0]!=1)&&(m[1]!=1)&&(m[2]!=1)&&(m[3]!=1)&&(m[4]!=1)&&(m[5]!=1)&&(m[6]!=1)&&(m[7]!=1)&&(m[8]!=1)&&(m[9]!=1))&&((m[0]==2)||(m[1]==2)||(m[2]==2)||(m[3]==2)||(m[4]==2)||(m[5]==2)||(m[6]==2)||(m[7]==2)||(m[8]==2)||(m[9]==2)))
其实很好理解,就是当m[10]中不能有等于1或2的,而且m[10]中必…
[/Quote]
用for 写不出来这样的关系啊?
for(int i=0;i<10;i++)
{
if(m[i]!=0)
{
if(m[i]!=1)
{
if(m[i]==2)
........
}
}
}

总感觉和原来的不一样。。。。
}
sxbwelcome 2009-02-17
  • 打赏
  • 举报
回复
3楼的程序是有问题的
试想 如果第九个数为1,而第十个数为0,那么根据题意最终的结果为false
但是根据他提供的程序结果是为true;
应修改如下:
for(int i=0,sign=0;i<10;i++)
if(!a[i])
sign=1;
else if(a[i]==1||a[i]==2)
{sign=0;break;}
if(sign)
hai040 2009-02-17
  • 打赏
  • 举报
回复
式子好像跟描述的不同

bool is_all_not_equal(int m[], int value){...}
按描述
if (!is_all_not_equal(m, 0) && is_all_not_equal(m, 1) && is_all_not_equal(m, 2))
bfhtian 2009-02-17
  • 打赏
  • 举报
回复


for(int i=0,int sign=0;i<10;i++)
if(!a[i]) sign=1;
else if(a[i]==1||a[i]==2)sign=0
if(sign)
waizqfor 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 lzh19840809 的帖子:]
if(((m[0]!=0)&&(m[1]!=0)&&(m[2]!=0)&&(m[3]!=0)&&(m[4]!=0)&&(m[5]!=0)&&(m[6]!=0)&&(m[7]!=0)&&(m[8]!=0)&&(m[9]!=0))&&((m[0]!=1)&&(m[1]!=1)&&(m[2]!=1)&&(m[3]!=1)&&(m[4]!=1)&&(m[5]!=1)&&(m[6]!=1)&&(m[7]!=1)&&(m[8]!=1)&&(m[9]!=1))&&((m[0]==2)||(m[1]==2)||(m[2]==2)||(m[3]==2)||(m[4]==2)||(m[5]==2)||(m[6]==2)||(m[7]==2)||(m[8]==2)||(m[9]==2)))
其实很好理解,就是当m[10]中不能有等于1或2的,而且m[10]中必…
[/Quote]
写成swtich不好吗 能比用if简化不少
加载更多回复(1)

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧