#include "stdafx.h" #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <math.h> /* Найти среднее геометрическое положительных элементов массива a[i], причем все элементы вводятся с клавы и вводить нужно при проверке и отрицательные и положительные, а среднее геометрическое чтобы только положительных считалось+через функцию надо сделать используя только вот эти библиотеки */ float avg_geom() { size_t nArraySize; // количество элементов в массива // ввод количества элеметов в массиве printf("Enter number of elements: "); scanf("%d", &nArraySize); // инициализация массива float* arr = (float*) malloc(nArraySize * sizeof(float)); if (arr == NULL) { puts("Can't allocate memory for array"); return (0.0f); } // ввод данных for(size_t i=0; i<nArraySize; i++) { printf("Enter %d-th element: ", i); scanf("%f", &arr[i]); } // вычисление среднего геометрического size_t positiveCount = 0; // количество положительных элементов float avg = 1.0f; // среднее геометрическое float eps = 0.0001f; // ошибка вычисления чисел с плавающей запятой for (size_t i=0; i<nArraySize; i++) { // учитываем только положительные числа if (arr[i] > eps) { positiveCount++; avg *= arr[i]; } } // завершающая стадия вычисления if (positiveCount > 0) { avg = pow(avg, 1.0f / (float) positiveCount); } // освобождение памяти free(arr); // возвращение результата return (avg); } |