From fefc7c358edfe567b1444cb88caed7738c4eb4fe Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Tue, 13 Dec 2022 12:30:19 +0000 Subject: - Added solutions by Luca Ferrari. - Added solutions by David Ferrone. - Added solutions by Dave Jacoby. - Added solutions by Mark Anderson. - Added solutions by Thomas Kohler. - Added solutions by Robert Ransbottom. - Added solutions by W. Luis Mochan. - Added solutions by Ulrich Rieke. - Added solutions by Olivier Delouya. - Added solutions by Robert DiCicco. --- challenge-195/ulrich-rieke/cpp/ch-2.cpp | 54 +++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 challenge-195/ulrich-rieke/cpp/ch-2.cpp (limited to 'challenge-195/ulrich-rieke/cpp/ch-2.cpp') diff --git a/challenge-195/ulrich-rieke/cpp/ch-2.cpp b/challenge-195/ulrich-rieke/cpp/ch-2.cpp new file mode 100644 index 0000000000..befdd7eb11 --- /dev/null +++ b/challenge-195/ulrich-rieke/cpp/ch-2.cpp @@ -0,0 +1,54 @@ +#include +#include +#include +#include +#include +#include + +std::vector split( const std::string & startline , const std::string & sep ) { + std::vector separated ; + std::string::size_type start { 0 } ; + std::string::size_type pos ; + do { + pos = startline.find_first_of( sep , start ) ; + separated.push_back( startline.substr(start , pos - start )) ; + start = pos + 1 ; + } while ( pos != std::string::npos ) ; + return separated ; +} + +int main( ) { + std::cout << "Please enter some integers, separated by blanks!\n" ; + std::string line ; + std::getline( std::cin , line ) ; + std::vector evens ; + std::vector numberstrings( split( line , " " ) ) ; + for ( auto & s : numberstrings ) { + int num = std::stoi( s ) ; + if ( num % 2 == 0 ) + evens.push_back( num ) ; + } + if ( evens.size( ) != 0 ) { + std::map frequencies ; + for ( int i : evens ) { + frequencies[ i ]++ ; + } + std::vector> allFrequencies ( frequencies.begin( ), + frequencies.end( ) ) ; + std::sort ( allFrequencies.begin( ) , allFrequencies.end( ) , + [ ] ( const auto & a, const auto & b ) { return a.second + > b.second ; } ) ; + if ( allFrequencies.begin( )->second != + (allFrequencies.begin( ) + 1)->second ) { + std::cout << allFrequencies.begin( )->first << std::endl ; + } + else { + std::sort( evens.begin( ) , evens.end( ) ) ; + std::cout << *evens.begin( ) << std::endl ; + } + } + else { + std::cout << -1 << std::endl ; + } + return 0 ; +} -- cgit