C++

Номер min элемента, произведение элементов массива

Дан массив из N элементов (вещественные числа). Вычислить:

номер минимального элемента массива;
произведение элементов массива, расположенных между первым и вторым отрицательными элементами;
преобразовать массив так, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом – элементы, все остальные.
// operations_array.cpp: определяет точку входа для консольного приложения.
 
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
 
int main(int argc, char* argv[])
{
    srand(time(NULL));
    setlocale(LC_ALL, "rus");
    int length_array;
    cout << "Укажите количество элементов массива: ";
    cin >> length_array;
 
    float *arrayPtr = new float [length_array]; // одномерный динамический массив
 
    // заполняем одномерный массив случайными числами
    for (int counter = 0; counter < length_array; counter++)
    {
        arrayPtr[counter] = - 5.00 + ((rand() % 101) / 10.0); // генерируем случайные числа [-5, 5]
        cout << arrayPtr[counter] << "  "; // вывод сгенерированного числа
    }
    cout << endl;
 
    float min = arrayPtr[0]; // инициализируем первым элементом массива
    int number_min = 0; // номер минимального элемента
    for (int counter = 0; counter < length_array; counter++)
    {
        if (min > arrayPtr[counter])
        {
            min = arrayPtr[counter]; // минимальный элемент
            number_min = counter; //  номер минимального элемента
        }
    }
    cout << "номер минимального элемента = " << (number_min + 1) << endl; //  номер минимального элемента
 
    double product = 1;
    for (int counter = 0; counter < length_array; counter++)
    {
        if (arrayPtr[counter] < 0) // находим первое отрицательное число
        {
            counter++; // переключаемся на следующий элемент
            while (arrayPtr[counter] > 0) // пока не нашли второе отрицательное число
            {
                product *= arrayPtr[counter]; // накапливаем произведение элементов
                counter++;
            }
            break; // выход из цикла for
        }
    }
    cout << "произведение = " << product << endl;
 
    float *relocation_arrayPtr = new float [length_array]; // одномерный динамический массив для перестановок
    int index = 0; // индекс массива перестановок
 
    // заполняем массив элементами, модуль которых не превышает 1
    for (int counter = 0; counter < length_array; counter++)
    {
        if (abs(arrayPtr[counter]) <= 1)
        {
            relocation_arrayPtr[index] = arrayPtr[counter];
            index++;
        }
    }
 
    // заполняем массив элементами, модуль которых больше 1
    for (int counter = 0; counter < length_array; counter++)
    {
        if (abs(arrayPtr[counter]) > 1)
        {
            relocation_arrayPtr[index] = arrayPtr[counter];
            index++;
        }
    }
 
    // напечатать преобразованный массив
    cout << "\nПреобразованный массив:\n";
    for (int counter = 0; counter < length_array; counter++)
    {
        cout << relocation_arrayPtr[counter] << "  ";
    }
    cout << endl;
 
    // высвобождение памяти отводимой под одномерный динамический массив:
    delete [] arrayPtr;
    delete [] relocation_arrayPtr;
    system("pause");
    return 0;
}
Теги:
массив
Добавлено: 11 Апреля 2018 10:10:33 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...