Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Check to see if all variable are equal to the same value in c++ [duplicate]

Tags:

c++

compare

What is the easiest way to compare multiple variable to see if they are all the same value? For example if var1 = 53 and I want to check if var2 or var3 is equal to var1 and each other? So far I have done this:

if(row1==row2==row3==row4==col1==col2==col3==col4==diag1==diag2)
    cout << "It is a magic square";
else
    cout << "Not a magic square";

However this doesn't seem to work. Thanks for you help.

like image 974
user1825241 Avatar asked Mar 04 '13 18:03

user1825241


2 Answers

In C++11, you could use variadic templates to define your own function:

#include <iostream>

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

template<typename T, typename U, typename... Ts>
bool all_equal(T&& t, U&& u, Ts&&... args)
{
    return (t == u) && all_equal(u, std::forward<Ts>(args)...);
}

int main()
{
    int x = 42;
    int y = 42
    std::cout << all_equal(42, y, x);
}
like image 176
Andy Prowl Avatar answered Oct 25 '22 06:10

Andy Prowl


You can't chain == operators like that. You would need to write, e.g.

if (row1==row2 && row2==row3 && row3==row4 && ...)
like image 30
Paul R Avatar answered Oct 25 '22 06:10

Paul R