Дан массив из 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; }
CppStudio.com
Укажите количество элементов массива: 15 -1 3.2 -3.8 4.2 -3.9 3.2 4 -3.4 -4.4 2.8 -2.6 4.6 2 4.6 -3.1 номер минимального элемента = 9 произведение = 3.2 Преобразованный массив: -1 3.2 -3.8 4.2 -3.9 3.2 4 -3.4 -4.4 2.8 -2.6 4.6 2 4.6 -3.1
Комментарии
Костя Сатив
Кайл Брофловски
gornyyvladimir
Adam1983
petruska
Мой вариант
ValMan
Почему бы не заменить 3-ю часть (54-87 строки) на 2 прогона исходного массива?