В моем примере была ошибка, исправил
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double[] x = { 1, 2, 3,4, 0 };
double sg = 1; //среднее геометрическое
for (int i = 0; i < x.Length - 1; i++)
{
if (x[i] > 0)// ограничение только положительные числа
{
sg = sg * x[i];
}
}
sg = Math.Exp(Math.Log(sg) / (x.Length - 1));
Console.Write(" среднее геометрическое = " + sg.ToString());
Console.Write("\nДля выхода из программы нажмите [Enter]:");
string ankey = Console.ReadLine();
}
}
}
было sg = Math.Exp(Math.Log(sg) * (x.Length - 1));
а так правильно sg = Math.Exp(Math.Log(sg) / (x.Length - 1));
среднее геометрическое это корень n степени из произведения a1*a2*...an
а если из суммы то так но я не скажу как это называется
пример такой
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 0 };
double sg=0; //среднее геометрическое
for(int i = 0;i<x.Length-1;i++)
{
if (x[i] > 0)// ограничение только положительные числа
{
sg = sg + x[i];
}
}
sg=Math .Exp(Math .Log (sg )/(x.Length-1));
Console.Write(" среднее геометрическое = " + sg.ToString());
Console.Write("\nДля выхода из программы нажмите [Enter]:");
string ankey = Console.ReadLine();
}
}
}