Лабораторная работа №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 с тем же индексом.
- Дан массив целых чисел. Поменять местами его минимальный и максимальный элементы.
- Дан целочисленный массив. Продублировать в нем все четные числа.