Пусть дано натуральное число n и вещественная матрица размером n 9. Найдите среднее арифметическое элементов
Пусть дано натуральное число n и вещественная матрица размером n * 9. Найдите среднее арифметическое элементов: для каждого из столбцов. А у меня просто показывает среднее число, а нужно для каждого столбца. Что здесь нужно изменить?
static void Main(string[] args)
{
Random r = new Random();
int n = (int)r.Next(1, 20);
int m = (int)r.Next(1, 30);
double[,] mas = new double[n, m];
double minX, maxX, average;
string s;
do
{
Console.WriteLine("Введите n");
s = Console.ReadLine();
}
while (int.TryParse(s, out n) == false || n <= 0);
do
{
Console.WriteLine("Введите m");
s = Console.ReadLine();
}
while (int.TryParse(s, out m) == false || m <= 0);
mas = new double[n, m];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
mas[i, j] = r.Next(-10, 10);
}
}
minX = mas[2, 1]; maxX = mas[2, 1];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (j < i)
{
if (mas[i, j] < minX)
minX = mas[i, j];
if (mas[i, j] > maxX)
maxX = mas[i, j];
}
Console.Write("{0,6}", mas[i, j]);
}
Console.WriteLine();
}
average = (minX + maxX) / 2;
Console.WriteLine("Среднее: " + average);
Console.ReadLine();
}
Ответы (1 шт):
Автор решения: PeterP
→ Ссылка
static void Main(string[] args)
{
Random r = new Random();
int n = (int)r.Next(1, 20);
int m = (int)r.Next(1, 30);
double[,] mas = new double[n, m];
double minX, maxX;
double average = 0;
string s;
do
{
Console.WriteLine("Введите n");
s = Console.ReadLine();
}
while (int.TryParse(s, out n) == false || n <= 0);
do
{
Console.WriteLine("Введите m");
s = Console.ReadLine();
}
while (int.TryParse(s, out m) == false || m <= 0);
mas = new double[n, m];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
mas[i, j] = r.Next(-10, 10);
}
}
minX = mas[2, 1]; maxX = mas[2, 1];
double[] averages = new double[n];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (j < i)
{
if (mas[i, j] < minX)
minX = mas[i, j];
if (mas[i, j] > maxX)
maxX = mas[i, j];
}
Console.Write("{0,6}", mas[i, j]);
average += mas[i,j];
//Заполняем переменную average суммой всех значений из столбца i. Столбец i будет меняется во внешнем for, фактически это номер нашего столбца.
}
averages[i] = average / m;
//В i ячейку массива вписываем сумму всех значений столбца деленную на кол-во элементов столбца.
average = 0;
//Возвращаем переменной average значение 0, которое является дефолтным. Это нужно что бы не перемешивать суммы из разных столбцов.
Console.WriteLine();
}
for (int i = 0; i <averages.Length; i++)
{
Console.WriteLine("Среднее: " + averages[i]);
//Через цикл выводим средние значения всех столбцов.
}
Console.ReadLine();
}