Массивы как наследники класса Array 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Массивы как наследники класса Array



Основные понятия

Массив

В языке программирования С#, также как и в других языках программирования, структура данных массив используется очень часто. К необходимости применения массивов мы приходим всякий раз, когда требуется связать и использовать целый ряд родственных величин.

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

Массив - это структурированный тип данных, состоящий из фиксированного числа упорядоченных по индексу элементов, имеющих один и тот же тип.

Одномерный массив - это набор элементов одного типа, расположенных в одну строку.

Элементами массива могут быть данные любого, но только одного типа. Число элементов массива фиксируется при описании и в процессе выполнения программы не меняется. Например, результаты многократных замеров температуры воздуха в течение года удобно рассматривать как совокупность вещественных чисел, объединенных в один сложный объект - массив измерений.

Описание массива

Объявление массива похоже на объявление переменной за тем исключением, что после указания типа ставятся квадратные скобки:

  тип_переменной [ ] название_массива;

Например, определим массив целых чисел:

  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;

И так как у нас массив определен только для 4 элементов, то мы не можем обратиться, например, к шестому элементу: nums [5] = 5;. Если мы так попытаемся сделать, то мы получим исключение IndexOutOfRangeException.

Пример программирования с использованием одномерного массива

Задание. Найдите минимальный элемент в одномерном мас-сиве.

Задача поиска минимального и (или) максимального значений в массиве чисел весьма распространена. Типовым приемом поиска минимума и максимума является присвоение в самом начале алгоритма переменным, хранящим значения максимума и минимума, первого элемента массива, в котором осуществляется поиск.

1. На рисунке 5.1 – разработка алгоритма:

– входные данные: маs – массив целых чисел;

– выходные данные: min– целочисленная переменная;

– промежуточные данные: i – счетчик цикла.

 

Рис. 5.1. Схема алгоритма программы

2. Разработка формы – таблица 5.1, рисунок 5.2.

// Пример удален, надо добавить

Индивидуальные задания

Задачи первого уровня сложности

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

2. Даны координаты n точек на плоскости: х1, у1,..., хn, уn (n=10), которые являются вершинами ломаной. Найдите номера 2-х точек, расстояние между которыми наибольшее. Считайте, что такая пара точек единственная.

Дан массив из 15 целых чисел, среди которых могут быть одинаковые числа. Минимальные элементы этого массива замените целой частью среднего арифметического всех элементов массива, остальные члены массива оставить без изменения.

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

5. Дан целочисленный массив а [15]. Найдите наименьшее и наибольшее из четных чисел в последовательности чисел а [15]. Предусмотрите ситуацию, когда четных чисел в последовательности нет.

6. Дан целочисленный массив а [15]. Найдите наибольшее из нечетных чисел и количество четных чисел в массиве а [15]. Предусмотрите ситуацию, когда нечетных чисел в последовательности нет.

7. Дан целочисленный массив а [15]. Найдите наибольшее и наименьшее числа в этом массиве и поменяйте эти числа местами.

Дан массив целых чисел, содержащий 10 элементов. Если минимальный элемент в этом массиве находится на первом месте, а максимальный – на последнем месте, то поменяйте местами эти элементы, иначе – массив не изменяйте.

Дан массив из 15 вещественных чисел. Если максимальный элемент массива предшествует минимальному элементу, то подсчитайте произведение минимального и максимального элементов, иначе – среднее арифметическое.

13. Дан массив b из 15 целых чисел. Найдите наименьшее из чисел, расположенных от начала массива до максимального элемента массива b.

14. Даны координаты n точек на плоскости: х1, у1,..., хn, уn (n=10), которые являются вершинами ломаной. Найдите номера 2-х точек, расстояние между которыми наименьшее. Считайте, что такая пара точек единственная.

Дан массив из 10 целых чисел. Если максимальный элемент находится на 2 месте, а минимальный элемент – на 5 месте, то все элементы, расположенные от минимального элемента и до конца массива, установите равными максимальному элементу.

20. Даны натуральное число n и целочисленный массив а [15]. Определите среднее арифметическое тех чисел, которые кратны n.

21. Дан целочисленный массив а [15]. Найдите наименьшее из чисел, значения которых кратны 3, в последовательности чисел а [15]. Предусмотрите ситуацию, когда таких чисел в последовательности нет.

22. Дан целочисленный массив а [10]. Найдите наибольшее из чисел, значения которых кратны 5 и не кратны 7, в последовательности чисел а [10]. Предусмотрите ситуацию, когда таких чисел в последовательности нет.

23. Дан массив b из 15 целых чисел. Найдите наибольшее из чисел, расположенных от начала массива до минимального элемента массива b.

Дан массив из 15 вещественных чисел. Максимальный элемент массива замените суммой минимального и максимального элементов, а минимальный элемент - разностью максимального и минимального элементов. Выведите преобразованный массив.

Дан массив из 10 целых чисел, среди которых могут быть одинаковые числа. Установите все элементы, имеющие наименьшее значение, равными среднему арифметическому значению положительных элементов массива. Предусмотрите ситуацию, когда в массиве положительных чисел нет.

27. Дан массив из 15 целых чисел, значения которых лежат в диапазоне от 1 до 1000. Определите индекс первого элемента тройки элементов массива, сумма которых максимальна. Например, 1, 2 и 3 элементы, 4, 5 и 6 элементы и т.д.

28. Дан массив из 20 целых чисел. Определите индекс первого элемента пары элементов массива, сумма которых максимальна. Например, 1 и 2 элементы, 3 и 4 элементы и т.д.

29. Дан массив из 20 целых чисел. Определите индекс первого элемента пары элементов массива, произведение которых минимально. Например, 1 и 2 элементы, 3 и 4 элементы и т.д.

30. Дан массив из 15 целых чисел, значения которых лежат в диапазоне от 1 до 1000. Определите индекс первого элемента тройки элементов массива, сумма которых минимальна. Например, 1, 2 и 3 элементы, 4, 5 и 6 элементы и т.д.

Задачи второго уровня сложности

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

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

3. Даны натуральное число n и целочисленный массив а [n], среди элементов которого есть одинаковые. Создайте массив b из различных элементов массива а.

4. Даны натуральное число n и целые числа а1,...,аn, среди которых могут быть как положительные, так и отрицательные числа. Создайте массив b, в начале которого поместить отрицательные числа, а в конце - положительные.

5. Даны натуральное число n и символьный массив а[n], в котором хранятся латинские буквы и арабские цифры. Создайте символьный массив b, поместив в него только латинские буквы из массива а.

6. Даны натуральное число n и символьный массив а [n],
в котором хранятся латинские буквы и арабские цифры. Создайте целочисленный массив b, поместив в него только цифры из массива а.

7. Даны натуральное число n и целочисленный массив а [n]. Упорядочьте массив а по возрастанию.

8. Даны натуральное число n и целочисленный массив а [n]. Упорядочьте массив а по убыванию.

9. Даны натуральное число n и символьный массив а [n],
в котором хранятся латинские буквы и арабские цифры. Создайте символьный массив b, поместив в начале которого числа, а в кон-
це - латинские буквы из массива а.

10. Даны натуральное число n и целочисленный массив а [n]. состоящий только из 0 и 1. Определите самое большое количество подряд идущих единиц и выведите на экран индексы начала и конца этого диапазона.

11. Даны натуральное число n и целочисленный массив а [n], состоящий только из 0 и 1. Определите самое большое количество подряд идущих нулей и выведите на экран индекс начала и количество нулей самой длинной серии нулей.

12. Даны натуральное число n и целочисленный массив а [n]. Выведите значение true для случая, если массив а [n] представляет знакочередующуюся последовательность, и false − в противном случае. Последовательность является знакочередующейся, если знак очередного элемента противоположен знакам его соседей.

13. Даны натуральное число n и целочисленные массивы а [n] и b [n], упорядоченные по возрастанию (предыдущий элемент меньше последующего). Требуется получить третий упорядоченный по возрастанию массив путем слияния первых двух.

14. Даны натуральное число n и целочисленный массив а [n]. Выведите значение true для случая, если массив а [n] представляет возрастающую или убывающую последовательность, и false − в противном случае.

15. Даны натуральное число n и целые числа а1,...,аn. Подсчитайте максимальную длину последовательности подряд расположенных элементов, имеющих отрицательные значения. Возможно, что таких чисел в массиве а нет.

16. Даны натуральное число n и целые числа а1,...,аn. Подсчитайте максимальную длину последовательности подряд расположенных элементов, имеющих положительные значения. Возможно, что таких чисел в массиве а нет.

17. Даны натуральное число n и целочисленные массивы а [n] и b [n]. Из массива а выберите элементы, которых нет в массиве b. Возможно, что таких чисел в массиве а и в массиве b нет.

18. Даны натуральное число n и целочисленные массивы а [n] и b[n]. Из массива а выбрать элементы, которые есть в массиве b. Возможно, что таких чисел в массиве а и в массиве b нет.

19. Даны натуральное число n и целочисленные массивы а [n] и b [n]. Из массива а выбрать элементы, которые встречаются в массиве b более одного раза. Возможно, что таких чисел в массиве а и в массиве b нет.

20. Даны натуральное число n и целочисленные массивы а[n] и b[n]. Из массива а выбрать элементы, которые больше минимального элемента среди четных чисел массива b. Возможно, что таких чисел в массиве а и в массиве b нет.

21. Даны натуральное число n и целочисленные массивы а [n] и b [n]. Из массива а выбрать элементы, которые меньше максимального элемента среди нечетных чисел массива b. Возможно, что таких чисел в массиве а и в массиве b нет.

22. Даны натуральное число n и целочисленные массивы а [n] и b [n]. Из массива а выберите элементы, которые меньше максимального элемента среди чисел массива b, значения которых кратны 3. Возможно, что таких чисел в массиве а и в массиве b нет.

23. Даны натуральное число n и целочисленные массивы а [n] и b [n]. Из массива а выбрать элементы, которые больше минимального элемента среди чисел массива b, значения которых не кратны 7. Возможно, что таких чисел в массиве а и в массиве b нет.

24. Даны натуральное число n и целочисленные массивы а [n] и b [n]. Из массива а выберите элементы, которые больше суммы минимального и максимального элементов среди чисел массива b, значения которых кратны 5. Возможно, что таких чисел в массиве а и в массиве b нет.

25. Даны натуральное число n и целочисленные массивы а [n] и b [n]. Из массива а выберите элементы, которые меньше произведения минимального и максимального элементов среди нечетных чисел массива b. Возможно, что таких чисел в массиве а и вмассиве b нет.

26. Даны натуральное число n и целочисленные массивы а [n] и b [n]. Из массива а выберите элементы, которые меньше среднего арифметического минимального и максимального элементов среди четных чисел массива b. Возможно, что таких чисел в массиве а и в массиве b нет.

27. Даны натуральное число n и целочисленный массив а [n], элементами которого являются двузначные числа. Из массива а выберите элементы, у которых старшая цифра ровно в 2 раза меньше младшей цифры. Возможно, что таких чисел в массиве а нет.

28. Даны натуральное число n и целочисленный массив а [n], элементами которого являются двузначные числа. Из массива а выберите элементы, значения которых не принадлежат диапазону [50, 60]. Возможно, что таких чисел в массиве а нет.

29. Даны натуральное число n и символьный массив а [n], в котором хранятся буквы русского алфавита. Создайте символьный массив b, поместив в него буквы из массива а, лежащие в диапазоне [б, м]. Возможно, что таких букв в массиве а нет.

30. Даны натуральное число n и символьный массив а[n], в котором хранятся буквы латинского алфавита. Создайте символьный массив b, поместив в него буквы из массива а, не лежащие в диапазоне [d, p]. Возможно, что таких букв в массиве а нет.

Контрольные вопросы к главе 5

1. Может ли массив содержать один элемент?

2. Можно ли во время выполнения программы изменить размер массива?

3. Могут ли элементами некоторого массива быть числа 1,
1.41, 4.98, 30?

4. Верно ли, что тип элементов массива может быть любым?

5. Может ли типом индекса массива быть тип int или float?

6. Являются ли типы массивов типами значений?

7. При выполнении какой операции создаётся объект класса массивов?

8. Где размещается (в программном стеке или в куче) массив?

9. Какие значения принимают элементы массива при отсутствии в его определении инициализатора.

10. Какова структура инициализатора массива?

11. Напишите фрагмент программы ввода массива b, описанного следующим образом:

int b [6];

12. Напишите фрагмент программы вывода массива a, описанного следующим образом:

float a[5];

13. Присвойте нулевые значения всем элементам массива

double a[7];

14. Объясните назначение всех элементов цикла foreach. Каково назначение и возможности переменной цикла foreach.

15.  Можно ли изменить размер массива-объекта после его создания?

16.  Можно ли изменить размер массива-объекта в процессе выполнения программы?

17.  Назовите свойства массивов, унаследованные ими от класса Array.

18.  Приведите примеры нестатических методов одномерных массивов. Приведите примеры статических методов одномерных массивов.

19.  В чём различия методов Copy() и Clone()?

20.  Что такое размерность массива? Что такое спецификатор размерности массива?

21.  Допустимо ли динамическое определение размеров многомерных массивов?

22.  Чему равно свойство Length для многомерного массива?


 

Основные понятия

Массив

В языке программирования С#, также как и в других языках программирования, структура данных массив используется очень часто. К необходимости применения массивов мы приходим всякий раз, когда требуется связать и использовать целый ряд родственных величин.

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

Массив - это структурированный тип данных, состоящий из фиксированного числа упорядоченных по индексу элементов, имеющих один и тот же тип.

Одномерный массив - это набор элементов одного типа, расположенных в одну строку.

Элементами массива могут быть данные любого, но только одного типа. Число элементов массива фиксируется при описании и в процессе выполнения программы не меняется. Например, результаты многократных замеров температуры воздуха в течение года удобно рассматривать как совокупность вещественных чисел, объединенных в один сложный объект - массив измерений.

Описание массива

Объявление массива похоже на объявление переменной за тем исключением, что после указания типа ставятся квадратные скобки:

  тип_переменной [ ] название_массива;

Например, определим массив целых чисел:

  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;

И так как у нас массив определен только для 4 элементов, то мы не можем обратиться, например, к шестому элементу: nums [5] = 5;. Если мы так попытаемся сделать, то мы получим исключение IndexOutOfRangeException.

Массивы как наследники класса Array

Одномерные массивы наследуют из класса Array несколько свойств и много методов, упрощающих работу с массивами.

Среди свойств следует в первую очередь назвать свойство int Length – целочисленное (32 бита) значение, определяющее общее количество элементов экземпляра массива (изменять его нельзя). Это свойство незаменимо в методах, параметрами которых служат ссылки на массивы.

Второе из полезных свойств – int Rank – размерность (число измерений) массива. Методы класса Array "метод: Array" позволяют решать многие типовые задачи обработки массивов. Вот некоторые из статических методов, применяемые к одномерным массивам:

static int BinarySearch() – бинарный поиск в упорядоченном массиве; результат выполнения – индекс соответствующего условию поиска элемента или отрицательное число, если элемента с искомым значением в массиве нет.

static void Сlear() – позволяет очистить (обнулить, присвоить значение пробелов или значение null) все элементы массива или указанный параметрами интервал его элементов;

static void Copy () – копирование части массива или всего массива в другой массив;

static int IndexOf() – возвращает наименьший индекс (минимальный номер) элемента, значение которого совпадает с образцом;

static int LastIndexOf() – возвращает последний индекс (максимальный номер) элемента, значение которого совпадает с образцом;

static void Reverse() – меняет на обратный порядок элементов в массиве;

static void Sort() – выполняет сортировку элементов массива.

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

Пример программирования с использованием одномерного массива

Задание. Найдите минимальный элемент в одномерном мас-сиве.

Задача поиска минимального и (или) максимального значений в массиве чисел весьма распространена. Типовым приемом поиска минимума и максимума является присвоение в самом начале алгоритма переменным, хранящим значения максимума и минимума, первого элемента массива, в котором осуществляется поиск.

1. На рисунке 5.1 – разработка алгоритма:

– входные данные: маs – массив целых чисел;

– выходные данные: min– целочисленная переменная;

– промежуточные данные: i – счетчик цикла.

 

Рис. 5.1. Схема алгоритма программы

2. Разработка формы – таблица 5.1, рисунок 5.2.

// Пример удален, надо добавить

Индивидуальные задания

Задачи первого уровня сложности

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

2. Даны координаты n точек на плоскости: х1, у1,..., хn, уn (n=10), которые являются вершинами ломаной. Найдите номера 2-х точек, расстояние между которыми наибольшее. Считайте, что такая пара точек единственная.

Дан массив из 15 целых чисел, среди которых могут быть одинаковые числа. Минимальные элементы этого массива замените целой частью среднего арифметического всех элементов массива, остальные члены массива оставить без изменения.

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

5. Дан целочисленный массив а [15]. Найдите наименьшее и наибольшее из четных чисел в последовательности чисел а [15]. Предусмотрите ситуацию, когда четных чисел в последовательности нет.

6. Дан целочисленный массив а [15]. Найдите наибольшее из нечетных чисел и количество четных чисел в массиве а [15]. Предусмотрите ситуацию, когда нечетных чисел в последовательности нет.

7. Дан целочисленный массив а [15]. Найдите наибольшее и наименьшее числа в этом массиве и поменяйте эти числа местами.



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 287; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.124.244 (0.084 с.)