.NET 4.x Матрица и её среднее арифметическое - C#
Формулировка задачи:
Прошу о помощи. Надо задать матрицу M x N (вводит пользователь), вывести её, определить максимальный элемент, определить среднее арифметическое и вывести результирующую матрицу, в которой все элементы большие среднего арифметического будут заменены на ноль.
Решение задачи: «.NET 4.x Матрица и её среднее арифметическое»
textual
Листинг программы
using System;
namespace ConsoleApplication7
{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random(1);
int i = 0, j = 0, x, y, max, avr = 0;
Console.Write("i=");
x = Convert.ToInt32(Console.ReadLine());
Console.Write("j=");
y = Convert.ToInt32(Console.ReadLine());
// лучше выделить память под матрицу после того как будет известна ее размерность (введены x и y)
int[,] matr = new int[x, y];
for (i = 0; i < x; i++)
{
for (j = 0; j < y; j++)
{
matr[i, j] = rnd.Next(1, 10);
Console.Write(matr[i, j] + " ");
}
Console.WriteLine();
}
Console.WriteLine("\n"); // эквивалентно 2-м переносам строки
max = matr[0, 0];
for (i = 0; i < x; i++) // вместо x и y было число 5, неверно, т.к. размерность массива может быть и меньше (в таком случае индекс выйдет за пределы матрицы). Думаю, это опечатка была :)
{
for (j = 0; j < y; j++)
{
if (max < matr[i, j])
max = matr[i, j];
}
}
Console.WriteLine("максимальный элемент:" + max);
// Вычисление среднего арифметического
for (i = 0; i < x; i++)
for (j = 0; j < y; j++)
avr += matr[i, j];
avr = avr / (x * y); // можно записать avr /= x * y;
Console.WriteLine("среднее арифметическое:" + avr);
Console.WriteLine("\n\n"); // эквивалентно 3-м переносам строки
for (i = 0; i < x; i++)
{
for (j = 0; j < y; j++)
{
if (matr[i, j] > avr)
matr[i, j] = 0;
Console.Write(matr[i, j] + " ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}