Как сделать сортировку по средне-арифметическому
В задании указано что нужно сделать сортировку. Сам код я написал, как сделать сортировку?
Суть задачи:
Рассчитать значения 12-ти элементов массива Y по формуле y(i) = i^2-2i+19.3cosi Вывести на экран этот массив и новый, разместив в нем первоначально элементы, значения которых меньше среднего арифметического, а потом остальные, не меняя их последовательности.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int const N = 12;
int p = 0;
double Y[N], X[N], avg = 0., eps = 1.e-9;
for (int i = 0; i < N; i++)
{
Y[i] = i * i - 2. * i + 19.3 * cos(i);
avg += Y[i];
cout << Y[i] << " ";
}
avg /= 12.;
cout << "\naverage=" << avg << "\n";
for (int i = 0; i < N; i++)
if (Y[i] < avg - eps) X[p++] = Y[i];
for (int i = 0; i < N; i++)
if (Y[i] >= avg - eps) X[p++] = Y[i];
for (int i = 0; i < N; i++)
cout << X[i] << " ";
cout << "\n";
system("pause");
return 0;
}
Ответы (1 шт):
Автор решения: NIKITB
→ Ссылка
#include <iostream>
const int N = 12;
using namespace std;
int main()
{
double* array1 = new double[N];
double* array2 = new double[N];
double* medium = 0; int p = N-1; int e = 0;
for (int i = 0; i < N; i++)
{
array1[i] = ( (i * i) - (2 * i) + (19.3 * cos(i)) );
*medium += array1[i];
cout << array1[i] << endl;
}
cout << "\naverage=" << medium << "\n"<<endl;
*medium /= 12;
for (int i = 0; i < N; i++)
{
if (array1[i] < *medium)
{
array2[e++] = array1[i];
}
}
for (int i = 0; i < N; i++)
{
if (array1[i] >= *medium)
{
array2[e++] = array1[i];
}
}delete[] array1; array1 = nullptr; delete medium;
for (int i = 0; i < N; i++)
{
cout << array2[i]<<endl;
}
delete[] array2; array2 = nullptr;
return 0;
}