Задачи с массивами

Последнее обновление: 10.11.2021

Познакомившись с циклами, переменными, условными конструкциями и массивами, рассмотрим несколько задач для работы с массивами.

Количество положительных чисел

Найдем количество положительных чисел в массиве:

int[] numbers = { -4, -3, -2, -1, 0, 1, 2, 3, 4 };
int result = 0;
foreach(int number in numbers)
{
	if(number > 0)
	{
		result++;
	}
}
Console.WriteLine($"Число элементов больше нуля: {result}");

Здесь создаем вспомогательную переменную result, которая будет содержать количество положительных чисел. В цикле прохожим по массиву и, если его элемент больше нуля, добавляем к переменной result единицу.

Инверсия массива

Вторая задача - инверсия массива, то есть переворот его в обратном порядке:

int[] numbers = { -4, -3, -2, -1,0, 1, 2, 3, 4 };
            
int n = numbers.Length; // длина массива
int k = n / 2;          // середина массива
int temp;               // вспомогательный элемент для обмена значениями
for(int i=0; i < k; i++)
{
	temp = numbers[i];
	numbers[i] = numbers[n - i - 1];
	numbers[n - i - 1] = temp;
}
foreach(int i in numbers)
{
	Console.Write($"{i} \t");
}

Поскольку нам надо изменять элементы массива, то для этого используется цикл for. Алгоритм решения задачи подразумевает перебор элементов до середины массива, которая в программе представлена переменной k, и обмен значений элемента, который имеет индекс i, и элемента с индексом n-i-1.

Программа сортировки массива

Теперь возьмем задачу посложнее - простейшую сортировку массива:

int[] nums = { 54, 7, -41, 2, 4, 2, 89, 33, -5, 12 };

// сортировка
int temp;
for (int i = 0; i < nums.Length - 1; i++)
{
    for (int j = i + 1; j < nums.Length; j++)
    {
        if (nums[i] > nums[j])
        {
            temp = nums[i];
            nums[i] = nums[j];
            nums[j] = temp;
        }
    }
}

// вывод
Console.WriteLine("Вывод отсортированного массива");
for (int i = 0; i < nums.Length; i++)
{
    Console.WriteLine(nums[i]);
}

Для сортировки массива выполняем проходы по массиву и сравниваем элементы. Поскольку нам надо последовательно сравнивать каждый элемент массива с каждым (за исключением сравния с самим собой), то здесь применятся вложенный цикл.

Во внешнем цикле мы берем элемент, который будем сравнивать:

for (int i = 0; i < nums.Length - 1; i++)

Далее запускаем вложенный цикл, который начинается, со следующего элемента, и из которого извлекаем элементы, с которыми будем сравнивать тот элемент, которые берется из массива во внешнем цикле:

for (int j = i + 1; j < nums.Length; j++)

Если элемент с меньшим индексом больше элемента с большим индексом, то меняем элементы местами.

if (nums[i] > nums[j])
{
	temp = nums[i];
	nums[i] = nums[j];
	nums[j] = temp;
}

В конце выводим все элементы.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850