Untitled

 avatar
unknown
c_cpp
a year ago
6.0 kB
6
Indexable
#include <iostream>
#include <string>
#include <vector>

std::vector< int > getNumbers()
{
    std::vector< int > result;

    int number = 0;
    int index = 1;

    std::cout << "Enter numbers to put into vector:\n";
    while( true )
    {
        std::cout << "Number " << index << ": ";
        std::cin >> number;
        if( number == 0 )
        {
            break;
        }
        result.push_back( number );

        ++index;
    }

    return result;
}

int findMinElement( const std::vector< int >& vec )
{
    int min = vec[ 0 ];

    for( const auto& e : vec )
    {
        if( min > e )
        {
            min = e;
        }
    }

    return min;
}

int findMaxElement( const std::vector< int >& vec )
{
    int max = vec[ 0 ];

    for( const auto& e : vec )
    {
        if( max < e )
        {
            max = e;
        }
    }

    return max;
}

double countAverage( const std::vector< int >& vec )
{
    double result;

    double sum = 0;
    for( const auto& e : vec )
    {
        sum += e;
    }

    result = sum / vec.size();

    return result;
}

int countDigit3( const std::vector< int >& vec )
{
    int result = 0;

    for( const auto& e : vec )
    {
        std::string text = std::to_string( e );
        for( const auto& t : text )
        {
            if( t == '3' )
            {
                ++result;
            }
        }
    }

    return result;
}

int findMinElementIndex( const std::vector< int >& vec, int start )
{
    int minIndex = start;

    for( int i = start + 1; i < vec.size(); ++i )
    {
        if( vec[ i ] < vec[ minIndex ] )
        {
            minIndex = i;
        }
    }

    return minIndex;
}

std::vector< int > sort( const std::vector< int >& vec )
{
    std::vector< int > result = vec;

    for( int i = 0; i < result.size(); ++i )
    {
        int minIndex = findMinElementIndex( result, i );
        std::swap( result[ i ], result[ minIndex ] );
    }

    return result;
}

double calculateMedian( const std::vector< int >& vec )
{
    double result = 0;

    std::vector< int > sortedVec = sort( vec );
    int size = sortedVec.size();

    if( sortedVec.size() % 2 != 0 )
    {
        result = sortedVec[ size / 2 ];
    }
    else
    {
        result = (sortedVec[size / 2 - 1] + sortedVec[size / 2]) / 2.0;
    }

    return result;
}

std::vector< int > getThreeSmallest( const std::vector< int >& vec )
{
    std::vector< int > result;

    std::vector< int > sortedVec = sort( vec );
    for( int i = 0; i < 3; ++i )
    {
        result.push_back( sortedVec[ i ] );
    }

    return result;
}

std::vector< int > getThreeBiggest( const std::vector< int >& vec )
{
    std::vector< int > result;

    std::vector< int > sortedVec = sort( vec );
    for( int i = 0; i < 3; ++i )
    {
        result.push_back( sortedVec.back() );
        sortedVec.pop_back();
    }

    return result;
}

std::vector< int > getSquareVector( const std::vector< int >& vec )
{
    std::vector< int > result;

    for( auto const& e : vec )
    {
        result.push_back( e * e );
    }

    return result;
}

int countEven( const std::vector< int >& vec )
{
    int result = 0;

    for( const auto& e : vec )
    {
        if( e % 2 == 0 )
        {
            ++result;
        }
    }

    return result;
}

int countOdd( const std::vector< int >& vec )
{
    int result = 0;

    for( const auto& e : vec )
    {
        if( e % 2 != 0 )
        {
            ++result;
        }
    }

    return result;
}

int countDividedBy3( const std::vector< int >& vec )
{
    int result = 0;

    for( const auto& e : vec )
    {
        if( e % 3 == 0 )
        {
            ++result;
        }
    }

    return result;
}

void printVector( const std::vector< int >& vec )
{
    for( const auto& e : vec )
    {
        std::cout << e << " ";
    }
    std::cout << '\n';
}

int main()
{
    std::vector< int > vec = getNumbers();

    // Print all elements in vector
    printVector( vec );

    // Min element
    int minElement = findMinElement( vec );
    std::cout << "Min element in vector: " << minElement << '\n';

    // Max element
    int maxElement = findMaxElement( vec );
    std::cout << "Max element in vector: " << maxElement << '\n';

    // Average elements
    double average = countAverage( vec );
    std::cout << "Average of vector elements: " << average << '\n';

    // Count occur of digit 3
    int numberOfDigit3 = countDigit3( vec );
    std::cout << "Occur of digit 3 in vector: " << numberOfDigit3 << '\n';

    // Sorted vector
    std::vector< int > sortedNumbers = sort( vec );
    std::cout << "Sorted vector:\n";
    printVector( sortedNumbers );

    // Median of vector
    double median = calculateMedian( vec );
    std::cout << "Median of vector elements: " << median << '\n';

    // Three smallest numbers
    std::vector< int > threeSmallest = getThreeSmallest( vec );
    std::cout << "Three smallest numbers:\n";
    printVector( threeSmallest );

    // Three biggest numbers
    std::vector< int > threeBiggest = getThreeBiggest( vec );
    std::cout << "Three biggest numbers:\n";
    printVector( threeBiggest );

    // Squared values
    std::vector< int > squaredVector = getSquareVector( vec );
    std::cout << "Squared values in vector:\n";
    printVector( squaredVector );

    // Count even
    int evens = countEven( vec );
    std::cout << "Amount of even numbers: " << evens << '\n';

    // Count odd
    int odds = countOdd( vec );
    std::cout << "Amount of odd numbers: " << odds << '\n';

    // Divided by 3
    int dividedBy3 = countDividedBy3( vec );
    std::cout << "Amount of numbers divided by 3: " << dividedBy3 << '\n';

    return 0;
}
Editor is loading...
Leave a Comment