C#

Заданы три матрицы размерами 2x2, 3x3, 4x4. Для каждой из матриц определить среднее

Заданы три матрицы размерами 2x2, 3x3, 4x4. Для каждой из матриц определить среднее арифметическое значение положительных элементов главной диагонали.
 using System; 
namespace q232336000
{
class Program
{
private static Random rand = new Random();
private static double RandPrintAverage(ref int[,] a)
{
int s = 0, k = 0;
for(int i = 0; i < a.GetLength(0); ++i)
{
for(int j = 0; j < a.GetLength(1); ++j)
{
a[i, j] = rand.Next(-50, 50);
Console.Write("{0,4:####}", a[i, j]);
if (i == j && a[i, j] > 0)
{
s += a[i, j];
++k;
}
}
Console.WriteLine();
}
return k != 0 ? 1.0 * s / k : 0;
}
public static void Main(string[] args)
{

int[,] a = new int[2, 2], b = new int[3, 3], c = new int[4, 4];
Console.WriteLine("Среднее арифметическое: {0}\n", RandPrintAverage(ref a));
Console.WriteLine("Среднее арифметическое: {0}\n", RandPrintAverage(ref b));
Console.WriteLine("Среднее арифметическое: {0}\n", RandPrintAverage(ref c));
Console.ReadKey(true);
}
}
}
ПБ
Павел Бердинских
97 886
Лучший ответ
Для каждой матрицы A размером N на N:
  • заводим счетчик суммы и количества, равный нулю: double sum = 0; int count = 0;
  • идем циклом, меняя i от 0 до N - 1: for (int i = 0; i < N; i++) {
  • если A[i][i] > 0, то прибавляем этот элемент к сумме: if (A[i][i] > 0) { sum += A[i][i]; count++; }
  • по завершении цикла делим сумму на количество и получаем среднее:
    double average = sum / count;
Вы можете вынести эту процедуру в отдельный статический метод, чтобы затем вызывать его и передавать аргументом ту или иную матрицу для анализа.
Влад Широковских а можно код как это сделать?

Похожие вопросы