Всем Хай! Так как тема двумерных массивов достаточно сложная, то нужно больше примеров с ними. Нужно больше практики. Нужно больше кода с разбором. Хотя, может только я так считаю, что тема сложная? Напишите в комментариях, кому легко даются массивы? Лично мне нужно больше практики в этой области, поэтому, сегодня на обзоре две программки с двумерными массивами. Задание брал из того же курса что изучаю.
Первая программа.
Вот собственно код.
int[,] array = { { 1, 8, 7 }, { 2, 3, 4 }, { 3, 5, 6 } };
int sum = 0;
int proiz = 1;
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
Console.Write(array[i, j] + " ");
if (i == 1)
{
sum += array[i, j];
}
if (j == 0)
{
proiz *= array[i, j];
}
}
Console.WriteLine();
}
Console.WriteLine("Сумма второй строчки - " + sum);
Console.WriteLine("Произведение первого столбика - " + proiz);
Признаюсь, что я искал дополнительную информацию по работе отдельно со строчками и столбиками в массивах. Потому что я не понимал, как мне сразу прибавить всю строчку или умножить весь столбик в массиве. Но всё оказалась довольно просто.
У нас есть массив 3х3 «int[,] array». И так как нам нужно узнать сумму и произведение элементов массива, то мы вводим две переменные: «int sum= 0» и «int proiz= 1». И чтобы наша IDE не ругалась, сразу заносим в них (переменные) значения.
Ну а дальше как по урокам из этой статьи. Чтобы работать с данными в двумерном массиве, закидываем его в двойной цикл. Первый цикл перебирает строки «i», а второй столбцы «j».
Сразу выводим весь наш массив в консоли
Console.Write(array[i, j] + " ")
И тут самое основное. Арифметические действия. Ставим условие, при котором начинается нужный нам подсчёт. Если цикл доходит до 2 строчки, то мы складываем эту строчку «sum += array[i, j]». То есть он не сразу складывает эту строчку, а каждый цикл прибавляет к одному числу из строчки. Поэтому у нас изначально переменная равна 0 «int sum= 0», чтобы первое прибавленное число просто осталось неизменным в переменной.
Всё, то же самое только с умноженим. Ставим условие «if (j == 0)» и повторяем действия только с другим знаком «proiz *= array[i, j]».
Всё, когда циклы отработают, выводим результат в консоли.
И сразу переходим к следующей программе.
Вторая программа.
Суть в том, чтобы найти все максимальные числа в двумерном массиве и заменить их на 0. Разработку алгоритма разобьём на два этапа. Поехали.
На первом этапе найдём максимальный элемент в массиве.
Для начала укажем, что в программе будет рандом. Пусть всегда генерятся разные данные в массиве. А массив, кстати, у нас 10х10.
Random rand = new Random();
int[,] array = new int[10,10];
int maxNumber = int.MinValue;
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
array[i, j] = rand.Next(1,10);
Console.Write(array[i, j] + " ");
if (maxNumber < array[i, j])
{
maxNumber = array[i, j];
}
}
Console.WriteLine();
}
Console.WriteLine("\nМаксимальное число - "+ maxNumber + "\n");
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
if (maxNumber == array[i, j])
{
array[i, j] = 0;
}
Console.Write(array[i, j] + " ");
}
Console.WriteLine();
}
Вы уже заметили новое значение, которое принимает переменная «int».
int maxNumber = int.MinValue
Эту переменную мы вводим, чтобы сравнивать значения этой переменной с данными из массива. Но чтобы что-то сравнивать, нужно сначала определить это что-то. Мы не можем просто записать в перемену 0 и начинать сравнивать с ним. Значения у нас ведь могут быть и отрицательные. Поэтому в С# в переменную типа «int» можно записать такое значение «int.MinValue». Это значит, что здесь будет стоять максимально маленькое число для этого типа переменной. Есть аналогичное и для максимально большего число в переменной «int.MaxValue». Поэтому мы вписываем это значение и не паримся.
Дальше всё по шаблону с двумерными массивами. Два цикла и внутри мы указываем какими цифрами мы по рандому хотим забить наш массив «array[i, j] = rand.Next(1,10)» и запускаем условие. Если значение в нашей переменной «maxNumber» будет меньше чем значение в массиве, то мы записываем это значение в эту переменную.
if (maxNumber < array[i, j])
И так пока не переберём весь массив. В конце останется вывести максимальное число в консоли. И переходим ко второму этапу.
Вторым этапом мы заменим все максимальные числа нулями.
Для этого нам опять нужно перебрать весь массив, а значит, снова делаем два цикла. Внутри цикла ставим простое условие. Если значение из нашей переменной, а оно у нас уже максимальное по этому массиву, равно значению элемента массива, то меняем его значение на 0.
if (maxNumber == array[i, j])
И конечный массив выводим в консоль.
Всё просто если не спешить и разбить разработку на маленькие этапы.
В следующей статье будет небольшая, но очень важная тема. И она может на первый взгляд показаться простой. Но я до сих пор полностью не разобрался в ней на практике. В теории всё просто на практике есть пробелы. Поэтому подписывайтесь если не хотите пропустить и разобраться вместе в этой теме. Ведь если у меня возникли вопросы, то они могут возникнуть и у вас. А вместе быстрей разберёмся.
Возникли вопросы по прошлому материалу? Пишите их в комментариях. Всем до скорого!
#it #разработкаигр #программированиеснуля #программированиедляначинающих #какстатьпрограммистом #csharp #сишарп