aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-08-18 22:06:17 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-08-18 22:06:17 +0100
commitc3e7be1bb1a59220e61a72ee07aba46c0f0836ae (patch)
tree287356e2d9ea9b1495f39911127f04d1f6f1d307
parentecab1b4681d3fddc1c5ecd017aa4a155811d4d5c (diff)
downloadperlweeklychallenge-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.cpp32
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 ;
+}