1

Тема: Масиви С++

Допоможіть виконати завдання

У одновимірному масиві, що складається з цілих елементів, вичислити:
1) номер максимального елементу масиву;
2) добуток елементів масиву, розташованих між першим і другим нульовими елементами.
3) Перетворити масив так, щоб в першій його половині розташовувалися елементи, що стояли в
непарних позиціях, а в другій половині - елементи, що стояли в парних
позиціях.

Дякую!!!

2

Re: Масиви С++

300 $ usd

3

Re: Масиви С++

#include <iostream>
#include <iomanip>
#include <vector>
#include <ctime>

const size_t MAX_SIZE = 100; // max array size
const size_t MAX_VALUE = 10; //max value of elements array

void fill_array(int * );
void print_array(int *);
size_t get_max_pos(int *);
std::vector<size_t> get_pos_by_value(int *, int);
int get_multiplication_by_pos(int *, size_t, size_t);
void convert_array(int *);

int main()
{
    srand(time(nullptr));
    int * array_ = new int[MAX_SIZE];
    fill_array( array_);
    
    print_array(array_);
    std::cout << "\n1. the number of the maximum element of the array \n" << get_max_pos(array_) << std::endl;
    array_[(size_t)rand % MAX_SIZE] = 0;
    array_[(size_t)rand % MAX_SIZE] = 0;
    std::vector<size_t> pos_array = get_pos_by_value(array_, 0);
    std::cout << "\n2. the product of array elements located between the first and second zero elements \n";
    std::cout << get_multiplication_by_pos(array_, pos_array[0], pos_array[1]);
    std::cout << "\n3. convert array elements\n";
    convert_array(array_);
    print_array(array_);
    delete[] array_;
    return 0;
}

void convert_array(int * arr)
{
    std::vector<int> oddvect;
    std::vector<int> evenvect;
    size_t i;
    for (i = 0; i < MAX_SIZE; i++)
    {
        if ((arr[i] % 2) == 0)
        {
             evenvect.push_back(arr[i]); 
        }
        else
        {
          oddvect.push_back(arr[i]); 
        }
    }

    for (i = 0; i < evenvect.size(); i++)
    {
        arr[i] = evenvect[i];
    }
    
    for (i = 0; i < oddvect.size(); i++)
    {
        arr[i + evenvect.size()] = oddvect[i];
    }
    
}

int get_multiplication_by_pos(int * arr, size_t pos1, size_t pos2)
{
    int multi = arr[pos1 + 1];
    for (size_t i = pos1 + 2; i < pos2; i++)
    {
        multi *= arr[i];
    }
    return multi;    
}

std::vector<size_t> get_pos_by_value(int * arr, int value)
{
    std::vector<size_t> result;
    size_t i;
    for (i = 0; i < MAX_SIZE; i++)
    {
        if (value == arr[i])
        {
            result.push_back(i);
        }        
    }
    return result;
}

size_t get_max_pos(int * arr)
{
    int temp = 0;
    size_t i;
    for (i = 0; i < MAX_SIZE; i++)
    {
        if (temp < arr[i])
        {
            temp = arr[i];
        }        
    }
    return i;
}

void fill_array(int arr[])
{
       for (size_t i = 0; i < MAX_SIZE; i++)
    {
        arr[i] = (int)rand() % MAX_VALUE;
    }

}

void print_array(int * arr)
{
    for (size_t i = 0; i < MAX_SIZE; i++)
  {
    std::cout << "a[" << std::setw(3) << i << "]= " << std::setw(6) << arr[i] << '\t';
    if ((i+1) % 6 == 0) std::cout << std::endl;
  }

}
Подякували: erssoni2281