2011-11-19 12 views
10

मैं एकाधिक वस्तुओं की तुलना कैसे करूं? उदाहरण के लिए, मैं यह जांचना चाहता हूं कि सभी चर ए, बी, और सी चार 'एक्स' के बराबर हैं या सभी तीन 'ओ' के बराबर हैं या नहीं। (उनमें से 2 कर रहे हैं एक्स और एक है हे यह गलत लौटना चाहिए।)मैं कैसे जांच सकता हूं कि एकाधिक चर समान मान के बराबर हैं या नहीं?

मैंने कोशिश की:

if (A, B, C == 'X' || A, B, C == 'O') 
    { 
    //Do whatever 
    } 

लेकिन यह काम नहीं किया। इसे करने का बेहतरीन तरीका क्या है?

+0

Btw, आप एक के बजाय एक सरणी के साथ बेहतर नहीं हो सकता है, बी, सी चर? बस – Kos

+0

पूछना मैं एक चर का उपयोग कर रहा हूँ। ए, बी, सी द्वारा मेरा मतलब है: myArray [0], myArray [1], myArray [2]। –

+1

ऐसा लगता है कि नीचे दिए गए उत्तर के अलावा ऐसा करने के अलावा कोई अन्य तरीका नहीं है या बस उन्हें एक-एक करके परीक्षण करना है। वैसे भी धन्यवाद। –

उत्तर

14
if((A == 'X' || A == 'O') && A == B && B == C) 
{ 
    // Do whatever 
} 
+2

एक साधारण चीज़ जटिल क्यों करें? – Kos

+0

@ कोस: मेरा जटिल क्यों है और यह एक साधारण बात क्यों है? – Dani

+0

मैं @ कोस से सहमत हूं - इसे विस्तारित रूप के रूप में लिखा जाना चाहिए ताकि अन्य प्रोग्रामर यह समझ सकें कि आप क्या कर रहे हैं। कंपाइलर्स इन बुलियन स्थितियों को बेहतर तरीके से अनुकूलित कर सकते हैं, वैसे भी। –

1

बस उन्हें अलग और उन्हें एक एक करके परीक्षण:

if (A == 'O' && B == 'O' && C == 'O' || A == 'X' && B == 'X' && C == 'X') 
    // etc 
+0

आपको वहां '() 'जोड़ने की ज़रूरत है या यह मूल रूप से एक-एक करके जायेगा और न कि आपके समूह को दो अलग-अलग परीक्षण करने और उन्हें' या 'करने का इरादा नहीं है। – Dani

+0

@ दानी मैं आपको विश्वास करता हूं, लेकिन क्या आप समझाएंगे क्यों? अवरोही प्राथमिकता के क्रम में ऑपरेटर '==' फिर' && 'फिर' || 'हैं, है ना? इसका मतलब यह नहीं है कि सभी '==' पहले किए जाते हैं, फिर '&&', फिर '||'? और क्या यह सही नहीं है? –

+0

नॉप, '&&' और '||' की वही प्राथमिकता है, इसलिए पहले सभी '==' होगा, फिर 2 '&&' फिर '||' और फिर अंतिम '&&' – Dani

11
बस किस्म के लिए

:

template <typename T, typename U> 
bool allequal(const T &t, const U &u) { 
    return t == u; 
} 

template <typename T, typename U, typename... Others> 
bool allequal(const T &t, const U &u, Others const &... args) { 
    return (t == u) && allequal(u, args...); 
} 

if (allequal(a,b,c,'X') || allequal(a,b,c,'O')) { ... } 
+0

बहुत बहुत धन्यवाद! आपने मुझे यह हासिल करने के लिए एक समारोह बनाने का विचार दिया है! –

+1

इसे प्यार करें, सी ++ 11 पर प्रोप। –

संबंधित मुद्दे

 संबंधित मुद्दे