Задача: Найти сумму элементов массива, расположенных до минимального э

  • Автор темы INFINITIFXXX
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

INFINITIFXXX

Гость
#1
Помогите, пожалуйста, решить задачу:
дан массив из N элементов (вещественные числа).
Вычислить:
сумму элементов массива, расположенных до минимального элемента. Упорядочить по возрастанию отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах.
 

DarkKnight

Well-Known Member
01.08.2010
653
0
#2
Еще раз скажу, с т.к. с прошлой темой не растерялся, помогу и с этой... Только завтра, спать очень хочется...
Попробуй начало проги накидать сам, и запости.... я гляну..
 

DarkKnight

Well-Known Member
01.08.2010
653
0
#3
C++:
/*
дан массив из 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]<<" ";
}

}
 
Статус
Закрыто для дальнейших ответов.