Untitled
unknown
c_cpp
a year ago
6.7 kB
4
Indexable
#include "RandomNumberGenerator.hpp" #include <cmath> #include <iostream> #include <vector> std::vector< int > getNumbers( int min, int max, int size = 100 ) { std::vector< int > result( size, 0 ); RandomNumberGenerator rng( static_cast< unsigned int >( std::random_device{}() ) ); for( int i = 0; i < size; ++i ) { result[ i ] = rng.getRandomInt( min, max ); } return result; } int findMaxElement( const std::vector< int >& vec ) { int max = vec[ 0 ]; for( const auto& e : vec ) { if( max < e ) { max = e; } } return max; } int getNumberOfMaxElements( const std::vector< int >& vec, int maxElement ) { int result = 0; for( const auto& e : vec ) { if( e == maxElement ) { ++result; } } return result; } void printOddNumbers( const std::vector< int >& vec ) { for( const auto& e : vec ) { if( e % 2 != 0 ) { std::cout << e << ", "; } } std::cout << '\n'; } void printOddIndexNumbers( const std::vector< int >& vec ) { for( int i = 1; i < vec.size(); i += 2 ) { std::cout << vec[ i ] << ", "; } std::cout << '\n'; } int countNumbersBetween5And15( const std::vector< int >& vec ) { int result = 0; for( const auto& e : vec ) { if( e >= 5 and e < 15 ) { ++result; } } return result; } void printNumbersBetween5And15( const std::vector< int >& vec ) { std::vector< int > result; for( const auto& e : vec ) { if( e >= 5 and e < 15 ) { result.push_back( e ); } } for( const auto& e : result ) { std::cout << e << ", "; } std::cout << '\n'; } int findNearInputElement( const std::vector< int >& vec ) { int result = vec[ 0 ]; int number; std::cout << "Enter the number: "; std::cin >> number; int minDifference = std::abs( vec[ 0 ] - number ); for( const auto& e : vec ) { int difference = std::abs( e - number ); if( difference < minDifference ) { result = e; minDifference = difference; } } return result; } int findSmallestIndex( const std::vector< int >& vec ) { int result = 0; int minElement = vec[ 0 ]; for( int i = 1; i < vec.size(); ++i ) { if( vec[ i ] < minElement ) { minElement = vec[ i ]; result = i; } } return result; } int beforeSmallest( const std::vector< int >& vec ) { int result; int smallestIndex = findSmallestIndex( vec ); result = vec[ smallestIndex - 1 ]; return result; } int afterSmallest( const std::vector< int >& vec ) { int result; int smallestIndex = findSmallestIndex( vec ); result = vec[ smallestIndex + 1 ]; return result; } std::vector< int > moreThan10Values( const std::vector< int >& vec ) { std::vector< int > result; for( const auto& e : vec ) { if( e > 10 ) { result.push_back( e ); } } return result; } std::vector< int > baseOnVecAndVec2( const std::vector< int >& v1, const std::vector< int >& v2 ) { std::vector< int > result; int sum = 0; for( const auto& e1 : v1 ) { sum += e1; } for( const auto& e2 : v2 ) { result.push_back( sum + e2 ); } return result; } void printElementsAtLeastThreeTimes( std::vector< int >& vec ) { // Sorting vector for( int i = 0; i < vec.size() - 1; ++i ) { for( int j = 0; j < vec.size() - 1 - i; ++j ) { if( vec[ j ] > vec[ j + 1 ] ) { std::swap( vec[ j ], vec[ j + 1 ] ); } } } std::cout << "Elements exist in vector at least three times:\n"; int currentElement = vec[ 0 ]; int count = 1; for( int i = 1; i < vec.size(); ++i ) { if( vec[ i ] == currentElement ) { ++count; } else { if( count >= 3 ) { std::cout << currentElement << " ( exist: " << count << " )\n"; } currentElement = vec[ i ]; count = 1; } } if( count >= 3 ) { std::cout << currentElement << " ( exist: " << count << " )\n"; } } void printVector( const std::vector< int >& vec ) { for( const auto& e : vec ) { std::cout << e << ", "; } std::cout << "\n\n"; } int main() { std::vector< int > vec = getNumbers( -50, 150, 100 ); // Print random values in vector printVector( vec ); // Max element int maxElement = findMaxElement( vec ); std::cout << "Max element in vector: " << maxElement << '\n'; // Count max elements int numberOfMaxElements = getNumberOfMaxElements( vec, maxElement ); std::cout << "Number of max elements in vector: " << numberOfMaxElements << '\n'; // Print odd numbers std::cout << "Odd numbers:\n"; printOddNumbers( vec ); // Print odd index numbers std::cout << "Odd index numbers:\n"; printOddIndexNumbers( vec ); // Count numbers between 5 and 15 <5, 15) int numbersBetween5And15 = countNumbersBetween5And15( vec ); std::cout << "Numbers between 5 and 15 <5, 15): " << numbersBetween5And15 << '\n'; // Print numbers between 5 and 15 <5, 15) std::cout << "Numbers between 5 and 15 <5, 15):\n"; printNumbersBetween5And15( vec ); // Near value element in numbers int nearValueElement = findNearInputElement( vec ); std::cout << "Near value element: " << nearValueElement << '\n'; // Before smallest element int beforeElement = beforeSmallest( vec ); std::cout << "Predecessor smallest element: " << beforeElement << '\n'; // Next smallest element int nextElement = afterSmallest( vec ); std::cout << "Predecessor smallest element: " << nextElement << '\n'; // More than 10 values vector std::vector< int > vec2 = moreThan10Values( vec ); std::cout << "Numbers greater than 10:\n"; printVector( vec2 ); // Result of two vectors mix std::vector< int > vec3 = baseOnVecAndVec2( vec, vec2 ); std::cout << "Mix of vec and vec2:\n"; printVector( vec3 ); printElementsAtLeastThreeTimes( vec ); return 0; }
Editor is loading...
Leave a Comment