From a799bc96049a853dae3a0b8bf14c4eb581a4a4ba Mon Sep 17 00:00:00 2001 From: Mohammad Sajid Anwar Date: Tue, 13 May 2025 13:30:54 +0100 Subject: - Added solutions by Eric Cheung. - Added solutions by Ulrich Rieke. - Added solutions by Mark Anderson. - Added solutions by Feng Chang. - Added solutions by E. Choroba. - Added solutions by Niels van Dijke. - Added solutions by Andreas Mahnke. - Added solutions by Luca Ferrari. - Added solutions by Andrew Shitov. - Added solutions by Ali Moradi. - Added solutions by W. Luis Mochan. - Added solutions by David Ferrone. - Added solutions by Conor Hoekstra. - Added solutions by Peter Meszaros. - Added solutions by Robert Ransbottom. - Added solutions by Peter Campbell Smith. - Added solutions by Robbie Hatley. --- challenge-321/ulrich-rieke/cpp/ch-1.cpp | 38 +++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 challenge-321/ulrich-rieke/cpp/ch-1.cpp (limited to 'challenge-321/ulrich-rieke/cpp/ch-1.cpp') diff --git a/challenge-321/ulrich-rieke/cpp/ch-1.cpp b/challenge-321/ulrich-rieke/cpp/ch-1.cpp new file mode 100755 index 0000000000..6dc8d9402b --- /dev/null +++ b/challenge-321/ulrich-rieke/cpp/ch-1.cpp @@ -0,0 +1,38 @@ +#include +#include +#include +#include +#include +#include + +std::vector split( const std::string & text , char delimiter ) { + std::vector tokens ; + std::string word ; + std::istringstream istr { text } ; + while ( std::getline( istr , word , delimiter ) ) + tokens.push_back( word ) ; + return tokens ; +} + +int main( ) { + std::cout << "Enter some numbers , their total number must be even!\n" ; + std::string line ; + std::getline( std::cin , line ) ; + auto tokens { split( line , ' ' ) } ; + std::vector numbers ; + for ( auto s : tokens ) + numbers.push_back( std::stod( s ) ) ; + std::set averages ; + while ( numbers.size( ) > 0 ) { + auto maxpos = std::max_element( numbers.begin( ) , numbers.end( ) ) ; + auto maxi = *maxpos ; + numbers.erase( maxpos ) ; + auto minpos = std::min_element( numbers.begin( ) , numbers.end( ) ) ; + auto mini = *minpos ; + numbers.erase( minpos ) ; + double average = ( maxi + mini ) / 2.0 ; + averages.insert( average ) ; + } + std::cout << averages.size( ) << '\n' ; + return 0 ; +} -- cgit