/*
дан массив из N элементов (вещественные числа).
Вычислить:
сумму элементов массива, расположенных до минимального элемента. Упорядочить по возрастанию отдельно элементы, стоящие на четных местах,
и элементы, стоящие на нечетных местах.
*/
/*
codeby.net
Autor: DarkKnight125
*/
#include <iostream>
#include <time.h>
using namespace std;
void main(void)
{
double *Array; //Массив
int ArrSize; //Размер массива
setlocale(LC_ALL,"Russian"); // Установим локаль = кодовую страницу CP1251
srand (time(NULL)); //Инициализация генератора случайно величины
cout<<"Введите размерность массива Arr : ";
cin>>ArrSize;
Array = new double[ArrSize]; //Выделение памяти под массив
cout<<endl<<endl<<"Элементы массива Arr:"<<endl;
for (int i=0; i<ArrSize; i++)
{
Array[i] = double (rand()%10000)/100; //Заполнение элементов массива случайными величинами
cout<<Array[i]<<" ";
}
//Нахождение минимального элемента в массиве и его позиции
double Min = numeric_limits<double>::max(); //Текущий минимум, определим его как максимальное значение double
int MinPos = -1; //Позиция с минимальным элементом
for (int i=0; i<ArrSize; i++) //Обойдем массив
{
if (Min>Array[i]) //Если Min> текущего элемента
{
Min = Array[i]; //Запишим новое мин. значение.
MinPos = i; //Запишим позицию
}
}
//Вычисление суммы до мин. элемента
double Summa = 0; //Сумма до минимального элемента
for (int i=0; i<MinPos; i++) //Обойдем массив до минимального элемента
Summa+= Array[i]; //Увеличиваем сумму
//Сортировка четных и ничетных элементов массива
for (int i=0; i <ArrSize; i+=2) //Обойдем массив с шагом 2
{
for (int j=i; j<ArrSize; j+=2) //Обойдем массив с шагом 2 еще раз но от текущего элемента прошлого массива
{
int Temp;
for (int k = 0; k<2 && (j+2+k)<ArrSize; k++) //Меняем элементы четные и ничетные местами
{
if (Array[i+k] > Array[j+2+k])
{
Temp = Array[i+k];
Array[i+k] = Array[j+2+k];
Array[j+2+k] = Temp;
}
}
}
}
cout<<endl<<"Сумма до минимального элемента : "<<Summa;
cout<<endl<<endl<<"Отсортированный массив: "<<endl;
//Вывод на экран массива
for (int i=0; i<ArrSize; i++)
{
cout<<Array[i]<<" ";
}
}