


Основы программирования на C# , 1 курс
Составить программу, предусматривающую использование компонентов класса DataGridView для ввода или вывода матриц/массивов. Задание размеров матриц/массивов с осуществлять с помощью компонентов класса NumericUpDown
Дан целочисленный массив A размером n, состоящий из элементов больше 0. Сформировать квадратную матрицу B порядка n, в которой элементы, рассчитываются по формуле bij = (ai–aj) / (ai+aj), где i, j = 1…n
Желательно побольше пояснений и поменьше замудрений в коде. Хотелось бы не тупо копи пасту делать , а еще понять что я делаю.
Попробую накидать что-то как говнокодер 2-го курса
Создаём новый проект в VisualStudio и выбираем шаблон Windows Forms App (уж сорян если ты не VisualStudio используешь)
Тыкаем в наш редактор формы DataGridView, NumericUpDown и Button.
Т.к размеры матрицы + массива задаются через NumericUpDown, а матрица по условию задачи должна быть квадратной (спасибо), то в Properties нашего NumericUpDown находим параметр Increment и устанавливаем его на 2. В конце концов, если кол-во элементов матрицы нечетное, то матрица не квадратная/Короче упрощаем жизнь себе и не даём испортить её пользователю/злобному преподу.
Переходим к написанию кода, буду использовать нейминг переменных, как учили именно меня.
Код и куча закидываю на pastebin в файл, т.к моя писанина пробила лимит на кол-во символов в ответе :(
https://pastebin.com/LMSsituQ
// создаём экземпляр класса, отвечающего за псевдослучайные числа
var rand = new Random();
// создаём целочисленный массив A размера 10, состоящий из случайных чисел в интервале 1-100
var A = Enumerable.Range(0, 10).Select(_ => rand.Next(1, 101)).ToArray();
// выводим массив на экран
Console.WriteLine("Initial array:");
Console.WriteLine(string.Join(" ", A.Select(x => $"{x,3}")));
Console.WriteLine();
// создаём матрицу B
var B = A.Select(a => A.Select(b => 1.0*(a-b)/(a+b)).ToArray()).ToArray();
// выводим матрицу B на экран
Console.WriteLine("Matrix:");
foreach(var line in B)
Console.WriteLine(string.Join(" ", line.Select(x => $"{x,6:F3} ")));
Console.WriteLine();
ну и пара ссылок на использованные конструкции:
https://learn.microsoft.com/ru-ru/dotnet/api/system.linq.enumerable.range?view=net-8.0#system-linq-enumerable-range(system-int32-system-int32)
https://learn.microsoft.com/ru-ru/dotnet/api/system.random.next?view=net-8.0#system-random-next(system-int32-system-int32)
https://learn.microsoft.com/ru-ru/dotnet/api/system.string.join?view=net-8.0#system-string-join(system-string-system-string() )
https://learn.microsoft.com/ru-ru/dotnet/api/system.linq.enumerable.select?view=net-8.0
https://learn.microsoft.com/ru-ru/dotnet/csharp/language-reference/tokens/interpolated