diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-08-18 22:06:17 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-08-18 22:06:17 +0100 |
| commit | c3e7be1bb1a59220e61a72ee07aba46c0f0836ae (patch) | |
| tree | 287356e2d9ea9b1495f39911127f04d1f6f1d307 | |
| parent | ecab1b4681d3fddc1c5ecd017aa4a155811d4d5c (diff) | |
| download | perlweeklychallenge-club-c3e7be1bb1a59220e61a72ee07aba46c0f0836ae.tar.gz perlweeklychallenge-club-c3e7be1bb1a59220e61a72ee07aba46c0f0836ae.tar.bz2 perlweeklychallenge-club-c3e7be1bb1a59220e61a72ee07aba46c0f0836ae.zip | |
- Added C++ solution by Ulrich Rieke.
| -rw-r--r-- | challenge-074/ulrich-rieke/cpp/ch-1.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/challenge-074/ulrich-rieke/cpp/ch-1.cpp b/challenge-074/ulrich-rieke/cpp/ch-1.cpp new file mode 100644 index 0000000000..60014664c9 --- /dev/null +++ b/challenge-074/ulrich-rieke/cpp/ch-1.cpp @@ -0,0 +1,32 @@ +#include <vector> +#include <set> +#include <algorithm> +#include <iostream> +#include <cmath> + +int main( ) { + int num = 0 ; + std::vector<int> numbers ; + std::cout << "Enter numbers , -1 to end!\n" ; + std::cin >> num ; + while ( num != -1 ) { + numbers.push_back( num ) ; + std::cin >> num ; + } + std::set<int> numSet ; + for ( int i : numbers ) + numSet.insert( i ) ; //unique numbers only + //create a vector to sort the numbers more easily + std::vector<int> differentNums( numSet.begin( ) , numSet.end( ) ) ; + std::sort( differentNums.begin( ) , differentNums.end( ) , + [&numbers]( int a , int b ) { return std::count( numbers.begin( ), + numbers.end( ) , a ) > std::count( numbers.begin( ) , + numbers.end( ) , b ) ; } ) ; + int maxFound = std::count( numbers.begin( ) , numbers.end( ) , + *differentNums.begin( ) ) ; + if ( maxFound > floor( static_cast<double>( numbers.size( ) ) / 2 ) ) + std::cout << '\n' << *differentNums.begin( ) << std::endl ; + else + std::cout << '\n' << -1 << std::endl ; + return 0 ; +} |
