2017-05-24 100 views
1

有什麼辦法可以同時滿足C++中的兩個條件?滿足兩個條件與一個單一的如果在C++

我有

x and y 
-1 -1 
-1  0 
-1  1 
0 -1 
0  0 
0  1 
1 -1 
1  0 
1  1 

列表所以我想用所有的人組合在一個公式,如:

a = x+y (example) 

但是我要排除的情況,即x和y同時= 0。

所以我嘗試:

if(x!=0 && y!=0){ 
a = x+y; 
} 

但是排除當x或y等於0,而不僅僅是點x每一種情況下,Y =(0,0),因爲我想。

我該如何解決這個問題?

+1

它可以這麼簡單'if(x or y)' – Slava

回答

10

你需要

if (!(x == 0 && y == 0)) { 
    ... 
} 

您可以使用De Morgan's laws要翻譯成

if (x != 0 || y != 0) { 
    ... 
} 
+1

最後!!經過多年的計算機組織和體系結構教學後,我發現有人實際上應用布爾代數來解決設計問題......只是提到它的事實讓我感到微笑。 :)啊那些基本的身份仍然活着,好! –

+0

儘管... x = -1和y = 1的情況下,您可以找到解決方案。它們的總和爲零。只是說。 –

1

您可以使用一個exnot條件和狀況

if (!(x == 0 && y == 0)) { //code 
} 
1
namespace utility{ 
    bool all_of(std::initializer_list<bool> bs){ 
    return std::all_of(bs.begin(), bs.end(), [](bool b){return b;}); 
    } 
    bool any_of(std::initializer_list<bool> bs){ 
    return std::any_of(bs.begin(), bs.end(), [](bool b){return b;}); 
    } 
} 

然後

if(!utility::all_of({x==0, y==0})){ 
    a = x+y; 
} 

if(!(x==0 && y==0)){ 
    a = x+y; 
} 

如果你更理智。

3

你應該使用邏輯OR操盤運營商,以獲得預期的結果:

if(x!=0 || y!=0){ 
    a = x+y; 
} 

這種情況的布爾臺將false如果只有兩個操作數都是0其他比它的true

0 0 false 
1 0 true 
0 1 true 
1 1 true 
相關問題