Untitled
unknown
c_cpp
a year ago
6.7 kB
14
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