Массивы - операции с массивами (размер изменяемый)

Содержание

Слайд 2

Понятие массива Козьминых Н.М. Массив - структура данных, позволяющая хранить под

Понятие массива

Козьминых Н.М.

Массив - структура данных, позволяющая хранить под одним именем

совокупность данных любого, но только одного какого-то типа
С массивом связаны следующие его свойства:
имя;
тип;
размерность;
размер.
Слайд 3

Виды массивов Козьминых Н.М. Массивы в C#: одномерные массивы; многомерные массивы; массивы массивов (ступенчатые, зубчатые массивы).

Виды массивов

Козьминых Н.М.

Массивы в C#:
одномерные массивы;
многомерные массивы;
массивы массивов (ступенчатые, зубчатые массивы).

Слайд 4

Одномерные массивы Объявление. Инициализация Козьминых Н.М. Объявление: [ ] ; int[

Одномерные массивы Объявление. Инициализация

Козьминых Н.М.

Объявление:
<тип>[ ] <объявители>;
int[ ] a, b, c;
Объявление

с инициализацией:
Явная инициализация:
double[ ] x = {5.5, 6.6, 7.7};
Инициализация с вызовом конструктора массива (ноль для арифметики, пустая строка для строковых массивов):
int[ ] d = new int[5];
Слайд 5

Одномерные массивы Инициализация Козьминых Н.М. Инициализация массива: с использованием ключевого слова

Одномерные массивы Инициализация

Козьминых Н.М.

Инициализация массива:
с использованием ключевого слова new:
int[] myArr = new

int[] {10,20,30,40,50};
без использования ключевого слова new:
string[] info = { "Фамилия", "Имя", "Отчество" };
с использованием new и указанием размера:
char[] symbol = new char[4] { 'X','Y','Z','M' };
Слайд 6

Этапы решения Козьминых Н.М. Сокращенная форма: ввод исходных данных; решение задачи;

Этапы решения

Козьминых Н.М.

Сокращенная форма:
ввод исходных данных;
решение задачи;
вывод результата на экран.
Развернутая форма

для задач с массивами:
объявление массива;
выделение памяти для необходимого количества элементов массива;
определение значений элементов массива;
вывод исходного массива на экран;
выполнение алгоритма;
вывод результата на экран.
Слайд 7

3. Удаление элементов массива Козьминых Н.М. 3.1 Удалить последний нулевой элемент

3. Удаление элементов массива

Козьминых Н.М.

3.1 Удалить последний нулевой элемент массива
Алгоритм:
А) в

цикле for просматриваем все элементы массива с конца (т.к. нужно найти последний элемент) и если текущий элемент равен нулю, то прерываем выполнение цикла
Б) в цикле for начиная с текущего элемента массива (i = i или ничего не указываем) и до предпоследнего (< n-1) присваиваем значению текущего элемента массива значение следующего элемента
В) изменить размер массива
Слайд 8

3. Удаление элементов массива Козьминых Н.М. 3.1 Удалить последний нулевой элемент

3. Удаление элементов массива

Козьминых Н.М.

3.1 Удалить последний нулевой элемент массива
void task()

{
int i;
for (i = A.Length -1; i >= 0; i--)
if (A[i] == 0)
break;
if (i == -1)
return;
for (; i < A.Length; i++)
A[i] = A[i+1];
Array.Resize(ref A, A.Length - 1);
}
Слайд 9

3. Удаление элементов массива Козьминых Н.М. 3.2 Удалить минимальный положительный элемент массива

3. Удаление элементов массива

Козьминых Н.М.

3.2 Удалить минимальный положительный элемент массива

Слайд 10

3. Удаление элементов массива Козьминых Н.М. 3.2 Удалить минимальный положительный элемент

3. Удаление элементов массива

Козьминых Н.М.

3.2 Удалить минимальный положительный элемент массива
Алгоритм:
А) находим

минимальный положительный элемент
1) переменной признаку k присваиваем -1: нет элемента
2) в цикле for начиная с начала;
если текущий элемент меньше нуля, переходим к следующей итерации цикла (т.к. нам нужно только положительные);
если положительных элементов не было (k==-1) или текущий элемент меньше минимального из рассмотренных, то в переменную индекса записываем индекс текущего минимального элемента
Б) в цикле for начиная с найденного элемента массива (i = k) и до предпоследнего (< n-1) присваиваем значению текущего элемента массива значение следующего элемента
В) изменить размер массива
Слайд 11

3. Удаление элементов массива Козьминых Н.М. 3.2 Удалить минимальный положительный элемент

3. Удаление элементов массива

Козьминых Н.М.

3.2 Удалить минимальный положительный элемент массива
void task()

{
int i, k;
k = -1;
for (i = 0; i < A.Length ; i++) {
if (A[i] < 0) continue;
if (k == -1 || A[i] }
if (k == -1)
return;
for (i = k; i < A.Length - 1; i++)
A[i] = A[i+1];
Array.Resize(ref A, A.Length - 1);
}

4. Вставка элементов массива Козьминых Н.М. 4.2. Вставить значение минимального элемента

и после максимального элемента
Алгоритм:
А) присваиваем переменной, в которой будем хранить минимальное значение массива, значение первого элемента массива (min = A0)
Б) присваиваем переменной, в которой будем хранить индекс максимального элемента массива, индекс первого элемента (imax = 0)
В) в цикле for просматриваем все элементы массива с начала
1) если значение текущего элемента массива больше значения элемента с индексом imax, то запоминаем текущий индекс как индекс максимального элемента
2) если значение текущего элемента массива меньше переменной, в которой храниться минимальное значение массива (min), то присваиваем этой переменной значение текущего элемента
Г) изменяем размер массива
Д) в цикле for сдвигаем элементы массива на две позиции вправо
Е) в позицию после максимально элемента записываем значение максимального элемента массива
Ж) в позицию максимально элемента и через позицию записываем значение минимального элемента массива