Лабораторная работа №3. Массивы
Требуемые условия завершения
Также мы сразу можем указать значения для этих элементов. Все следующие способы будут равноценны.
Открыто с: четверг, 28 февраля 2019, 11:55
Срок сдачи: четверг, 28 февраля 2019, 11:55
Массивы
Массив представляет набор однотипных данных. Объявление массива похоже на объявление переменной за тем исключением, что после указания типа ставятся квадратные скобки:
тип_переменной[] название_массива;Например, определим массив целых чисел:
int[] numbers;После определения переменной массива мы можем присвоить ей определенное значение:
int[] nums = new int[4];Здесь вначале мы объявили массив nums, который будет хранить данные типа int. Далее используя операцию new, мы выделили память для 4 элементов массива: new int[4]. Число 4 еще называется длиной массива. При таком определении все элементы получают значение по умолчанию, которое предусмотрено для их типа. Для типа int значение по умолчанию - 0.
Также мы сразу можем указать значения для этих элементов. Все следующие способы будут равноценны.
int[] nums2 = new int[4] { 1, 2, 3, 5 }; int[] nums3 = new int[] { 1, 2, 3, 5 }; int[] nums4 = new[] { 1, 2, 3, 5 }; int[] nums5 = { 1, 2, 3, 5 };Для обращения к элементам массива используются индексы. Индекс представляет номер элемента в массиве, при этом нумерация начинается с нуля, поэтому индекс первого элемента будет равен 0. А чтобы обратиться к четвертому элементу в массиве, нам надо использовать индекс 3, к примеру: nums[3]. Используем индексы для получения и установки значений элементов массива:
int[] nums = new int[4]; nums[0] = 1; nums[1] = 2; nums[2] = 3; nums[3] = 5; Console.WriteLine(nums[3]); // 5И так как у нас массив определен только для 4 элементов, то мы не можем обратиться, например, к шестому элементу:
nums[5] = 5;Если мы так попытаемся сделать, то мы получим исключение IndexOutOfRangeException.
Перебор элементов массива
Можно использовать цикл с фиксированным числом повторений:for (int i = 0; i < array.Length; i++) Console.WriteLine(array[i]);Но лучше использовать специально предназначенный для этого оператор foreach. foreach исключает любые ошибки в индексах и выглядит понятнее.
foreach (var item in array) Console.WriteLine(e);В случае присвоения элементов массива foreach не подходит.
Двумерные массивы
Двумерные массивы имеют тип int[,] (соответственно, double[,], string[,] и т.д.)int[,] twoDimensionalArray = new int[2, 3];Адресация двумерных массивов также идет через запятую
twoDimensionalArray[1,2]=1;Перебор элементов
for (int i = 0; i < twoDimensionalArray.GetLength(0); i++) for (int j = 0; j < twoDimensionalArray.GetLength(1); j++) twoDimensionalArray[i, j] = 10*i + j;Длины размерностей нужно получать через метод GetLength. Могут быть массивы и бо́льшей размерности
int[, ,] threeDimensionalArray = new int[2, 3, 4];
Ступенчатые (jagged) массивы
int[][] nums = new int[3][]; nums[0] = new int[2] { 1, 2 }; // выделяем память для первого подмассива nums[1] = new int[3] { 1, 2, 3 }; // выделяем память для второго подмассива nums[2] = new int[5] { 1, 2, 3, 4, 5 }; // выделяем память для третьего подмассива
Задачи
-
Создать обобщенный метод, который выводит на консоль все элементы массива с использованием разделителя. (Обратите внимание на необязательный параметр delimiter)
static void PrintArray<T>(T[] array, string delimiter = ", ")
Продемонстрировать использование метода для различных типов данных и различных значений разделителя.PrintArray(new int[]{1,2,3,4,5}); PrintArray(new double[]{1.0,2.0,3.0,4.0,5.0}); ....................................................................
-
Создать метод
static int[] RandomIntArray(int size = 10, int min = -10, int max = 10)
создающий массив, заполненный случайными целыми числами в диапазоне от min до max.
Указание 1. Создать в классе приложения объект типа Randomstatic Random random = new Random();
Указание 2. Для генерации случайного целого числа используем методNext(min, max)
-
Создать метод
static double[] RandomDoubleArray(int size = 10, double min = 0.0, double max = 1.0)
создающий массив, заполненный случайными вещественными числами в диапазоне от min до max.
Указание Для генерации случайного числа используем методNextDouble()
-
Создать метод с переменным числом параметров
static double Average(params int[] numbers)
возвращающий среднее арифметическое чисел, переданных в качестве параметра. Продемонстрировать использование.Console.WriteLine(Average(1,2,3)); Console.WriteLine(Average(1,2,3,4)); Console.WriteLine(Average(1,2,3,4,5));
- Дан массив целых чисел. Написать метод, которая находит и обнуляет максимальный элемент.
-
Дан массив целых чисел. Вычислить количество нечётных чисел в данном массиве, а также количество положительных чисел в нём. Для того, чтобы вернуть результат, используем кортеж
private static (int odd, int positive) OddPositive(int[] array)
Результат отображаем так:var array = RandomIntArray(); PrintArray(array); var (odd, positive) = OddPositive(array); Console.WriteLine($"Нечётных элементов - {odd}"); Console.WriteLine($"Положительных элементов - {positive}");
- Дан целочисленный массив размера N. Проверить, образуют ли его элементы арифметическую прогрессию. Если образуют, то вывести разность прогрессии, если нет — вывести 0.
- Даны два массива A и B одинакового размера. Сформировать новый массив того же размера, каждый элемент которого равен максимальному из элементов массивов A и B с тем же индексом.
- Дан массив целых чисел. Поменять местами его минимальный и максимальный элементы.
- Дан целочисленный массив. Продублировать в нем все четные числа.