Домашняя работа по C#: дан двумерный массив целых m на n элементов. Заполнить массив случайными числами, вывести массив в консоль и определить максимальное и минимальное значение в каждой строке массива. Для получения случайного числа использовать выражение Random.Shared.Next()
В этой задаче размерность массива заранее не известна, поэтому задавать размерность массива будем с помощью переменных, значения которых нам необходимо будет запросить и пользователя. Также, в этой домашней работе нам необходимо выполнить следующие задачи:
- Заполнить массив случайными числами
- Найти максимальное и минимальное значение в каждой строке
- Вывести массив в консоль
Создадим новое консольное приложение и, вначале, создадим необходимые переменные для инициализации массива:
Console.Write("Введите количество строк в массиве: ");
int m = int.Parse(Console.ReadLine());
Console.Write("Введите количество столбцов в массиве: ");
int n = int.Parse(Console.ReadLine());
int[,] matrix = new int[m, n];
Теперь нам необходимо заполнить массив случайными числами. Сделать это можно, используя вложенные циклы, например так:
for (int i = 0; i < m; i++) //первый цикл по строкам
{
for (int j = 0; j < n; j++) //второй цикл по столбцам
{
matrix[i, j] = Random.Shared.Next();
}
}
Здесь первый цикл проходит по строкам массива, а второй – по столбцам, заполняя элементы случайными числами. Теперь нам необходимо каким-либо образом определить минимальное и максимальное значение в каждой строке. Рассмотрим следующий исходный код:
int min = 0;
int max = 0;
for (int i = 0; i < m; i++) //первый цикл по строкам
{
for (int j = 0; j < n; j++) //второй цикл по столбцам
{
matrix[i, j] = Random.Shared.Next();
}
min = matrix[i, 0];
max = matrix[i, 0];
for (int j = 0; j < n; j++) //второй цикл по столбцам
{
if (matrix[i, j] < min)
min = matrix[i, j];
if (matrix[i, j] > max)
max = matrix[i, j];
}
Console.WriteLine($"Строка {i}: min = {min}; max = {max}");
}
Здесь, перед запуском цикла, мы заводим две переменные для храния минимального и максимального значения в строке:
int min = 0; int max = 0;
Далее, запускается цикл по строкам в котором стартует вначале заполнение очередной строки значениями:
for (int i = 0; i < m; i++) //первый цикл по строкам
{
for (int j = 0; j < n; j++) //второй цикл по столбцам
{
matrix[i, j] = Random.Shared.Next(); //устанавливаем значение в i-й строке, j-м столбце
}
//тут прочий код
Когда строка заполнена, мы присваиваем переменным значения по умолчанию – считаем, что минимальное и максимальное значение находится в первом столбце строки:
min = matrix[i, 0]; max = matrix[i, 0];
Снова запускаем цикл по столбцам в строке, на которой мы находимся в данный момент и ищем минимум и максимум:
for (int j = 0; j < n; j++) //второй цикл по столбцам
{
if (matrix[i, j] < min)
min = matrix[i, j];
if (matrix[i, j] > max)
max = matrix[i, j];
}
Теперь нам необходимо распечатать массив – вывести его в консоль и вывести также в консоль максимальное и минимальное значение в строке. Сделать это можно следующим образом (ниже представлен полный код циклов):
for (int i = 0; i < m; i++) //первый цикл по строкам
{
for (int j = 0; j < n; j++) //второй цикл по столбцам
{
matrix[i, j] = Random.Shared.Next();
}
min = matrix[i, 0];
max = matrix[i, 0];
for (int j = 0; j < n; j++) //второй цикл по столбцам
{
if (matrix[i, j] < min)
min = matrix[i, j];
if (matrix[i, j] > max)
max = matrix[i, j];
Console.Write($"{matrix[i, j]}\t");
}
Console.WriteLine($"Строка {i}: min = {min}; max = {max}");
}
На каждой итерации второго цикла по столбцам мы выводим значение элемента и ставим табуляцию:
Console.Write($"{matrix[i, j]}\t");
Как только этот цикл заканчивается – мы уже знаем минимум и максимум в столбце, поэтому можем вывести эти значения в консоль. Так как в этот момент последний символ в текущей строке в консоли – табуляция, то мы просто выводим информацию в консоль и переводим курсор на следующую строку
Console.WriteLine($"Строка {i}: min = {min}; max = {max}");
В результате, в консоли мы будем видеть следующий вывод:

Итого, весь исходный код нашего приложения будет выглядеть следующим образом:
Console.Write("Введите количество строк в массиве: ");
int m = int.Parse(Console.ReadLine());
Console.Write("Введите количество столбцов в массиве: ");
int n = int.Parse(Console.ReadLine());
int[,] matrix = new int[m, n];
int min = 0;
int max = 0;
for (int i = 0; i < m; i++) //первый цикл по строкам
{
for (int j = 0; j < n; j++) //второй цикл по столбцам
{
matrix[i, j] = Random.Shared.Next(0, 100);
}
min = matrix[i, 0];
max = matrix[i, 0];
for (int j = 0; j < n; j++) //второй цикл по столбцам
{
if (matrix[i, j] < min)
min = matrix[i, j];
if (matrix[i, j] > max)
max = matrix[i, j];
Console.Write($"{matrix[i, j]}\t");
}
Console.WriteLine($"Строка {i}: min = {min}; max = {max}");
}
Console.ReadKey();