Полное руководство по языку программирования С# 14 и платформе .NET 10 / Основы программирования на C#

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

Начальный ⏱ 3 мин чтения 👁 2 🕓 обновлено 11.08.2026

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

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

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


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;
}

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

Проверь себя

📋 Тест по теме «Задачи с массивами» Тест по теме

Практические задания

Лёгкое Ручная проверка Заполните пропуск в коде (1)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

int[] _____ = { -4, -3, -2, -1, 0, 1, 2, 3, 4 };
int result = 0;
foreach(int number in numbers)
{
	if(number > 0)
	{
		result++;
	}
}
Console.WriteLine($"Число элементов больше нуля: {result}");
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (2)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

int[] numbers = { -_____, -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");
}
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (3)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

int[] nums = { 54, _____, -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]);
}
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (4)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

for (int i = 0; i < nums.Length - _____; i++)
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (5)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

for (int j = i + 1; j < _____.Length; j++)
Войдите, чтобы отправить решение
Среднее Ручная проверка Восстановите код по памяти (1)
+20 XP

В этом фрагменте кода урока пропущены два ключевых элемента. Впишите оба пропущенных значения через запятую в порядке появления (например: x, 5).

int[] numbers = { -4, -3, -2, -1, 0, 1, 2, 3, 4 };
int _____ = 0;
foreach(int number in numbers)
{
	if(number > 0)
	{
		_____++;
	}
}
Console.WriteLine($"Число элементов больше нуля: {result}");
Войдите, чтобы отправить решение
Среднее Ручная проверка Восстановите код по памяти (2)
+20 XP

В этом фрагменте кода урока пропущены два ключевых элемента. Впишите оба пропущенных значения через запятую в порядке появления (например: x, 5).

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

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

	temp = nums[i];
	nums[j] = temp;
{
}
	nums[i] = nums[j];
if (nums[i] > nums[j])
Войдите, чтобы отправить решение
Сложное Ручная проверка Объясните и модифицируйте пример из урока «Задачи с массивами»
+30 XP

Опишите своими словами, что делает приведённый пример кода из урока «Задачи с массивами», и предложите одно осмысленное изменение (например, другое входное значение или дополнительное условие). Приведите итоговый код.

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}");
Войдите, чтобы отправить решение
Сложное Ручная проверка Найдите потенциальную проблему в коде урока «Задачи с массивами»
+30 XP

Изучите приведённый фрагмент кода и опишите, при каких входных данных или условиях он может сработать не так, как ожидается (граничный случай, отсутствие проверки и т.п.). Предложите исправленный вариант.

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");
}
Войдите, чтобы отправить решение
Мини-проект Ручная проверка Мини-проект по теме «Задачи с массивами»
+50 XP

Соберите небольшую программу, которая последовательно демонстрирует ключевые идеи урока. Программа должна быть рабочей и содержать минимум два самостоятельно написанных фрагмента, а не просто копию примера из урока.

Войдите, чтобы отправить решение
Домашнее задание Ручная проверка Домашнее задание по теме «Задачи с массивами»
+25 XP

Напишите собственную небольшую программу, применяющую материал темы «Задачи с массивами». Используйте не менее одной конструкции, показанной в примерах урока. Прикрепите код решения и краткое описание того, что он делает.

Войдите, чтобы отправить решение

Обсуждение (0)

Войдите, чтобы оставить комментарий.