GAECHKA
Твоя помощница в решении задач

Функция находящая среднее арифметическое квадратов положительных элементов массива

В исходном массиве случайных чисел найдите среднее арифметическое квадратов положительных элементов, разработав соответствующую функцию. Разработайте функцию, которая формирует новый массив, из тех элементов исходного массива, значения которых меньшее найденного среднего арифметического квадратов положительных элементов. На языке c++
0
вопрос задан

Источник


1 ответ
Ахтунг! Не отлаживал, писал на заборе!
// среднее квадратов положительных элементов
double aver_p(int* x, unsigned count)
{
  double a = 0.0; unsigned total_p = 0;
  while (count--)
  {
    if (*x > 0) a += (*x) * (*x), total_p++;
    x++;
  }
  return total_p ? a / total_p : -1.0;
}
 
// функция формирует новый массив, из тех элементов исходного массива, 
// значения которых меньшее найденного среднего арифметического квадратов 
// положительных элементов
int* filter(int* src, const unsigned count)
{
  double ap = aver_p(src, count);
  if (ap  0)    // нет положительных элементов 
    return NULL; // (среднее положительных вычислить невозможно)
    
  // вычисление кол-ва отфильтрованных элементов
  unsigned fc = 0, idx = count;
  while (idx--) fc += (src[idx]  ap) ? 1 : 0;
 
  if (!fc) return NULL; // подходящие элементы не найдены
  int* dest = new int[fc] ; // выделение памяти
  
  // заполнение выходного массива значениями
  for (idx = 0; idx != fc; idx++)
    if (src[idx]  ap)
      *dest++ = src[idx];
  
  return dest; // не забудь вернуть память ВЗАД!
}
C++