Вы находитесь на странице: 1из 10

Министерство науки и высшего образования Российской Федерации

ФГБОУ ВО «Кубанский государственный технологический университет»


(ФГБОУ ВО КубГТУ)

Институт компьютерных систем и информационной безопасности


Кафедра информационных систем и программирования
Направление подготовки 09.04.04 Программная инженерия
Профиль Промышленное проектирование программных систем

СОВРЕМЕННЫЕ ПРОБЛЕМЫ ИНФОРМАТИКИ

Отчет по лабораторной работе №2


«Исследование способов кодирования информации»

Выполнил:
студент 2 курса
группы 20-КМ-ПР1
Овезов М.Н.

Краснодар
2022
1 Задания
Задание 1. Разработать собственные методы, аналогичные методам
класса Array:
Array.Reverse(m); // реверс элементов массива
Array.Resize(ref m, 4); // изменение размера до 4 элементов
Array.Copy(m, i, m1, 0, j); // копирование со i-го по j-й элемент в
позицию 0
Задание 2. Разработать собственные функции, аналогичные функциям
класса Array:
var a = m.First();
var a = m.Last();
var a = m.Max();
var a = m.Min();
var a = m.Sum();
var a = m.Average(); // среднее арифметическое
var f = m.Contains(2); // проверка наличия элемента
Задание 3. Разработать функции для удаления и вставки элементов в
одномерный динамический массив по заданному индексу.
Задание 6. Разработать функцию последовательно поиска заданного
элемента в одномерном массиве известной длины в направлении от конца
массива к началу. Функция должна возвращать индекс первого вхождения
элемента в массив. При отсутствии элемента в массиве функция должна
возвращать величину -1.
Задание 8. Разработать программу двоичного поиска заданного
элемента в одномерном упорядоченном массиве известной длины. Функция
должна возвращать индекс вхождения элемента в массив. При отсутствии
элемента в массиве функция должна возвращать величину -1.
Задание 11. Разработать программы выборки K наибольших
элементов из одномерного массива, согласно алгоритму, описанному в
варианте решения 3
2 Ход выполнения лабораторной работы

Для выполнения лабораторной работы был выбран язык C#, так как
данный язык прост в синтаксисе и прекрасно подходит для работы с
одномерными массивами.
В первом задании были разработаны собственные методы для работы
с массивом такие как: реверс, изменение размерности массива, копирование
элементов из одного массива в другой (см. рис. 1 и листинг 1)

Рисунок 1 – Методы для работы с массивом

На рисунке 1 выведены в консоль работа функция реверса массива,


изменения размера и копирования.

Листинг 1
static void ReverseArray(int[] array)
{
int temp = 0;
for (int i = 0; i < array.Length / 2; i++)
{
temp = array[i];
array[i] = array[(array.Length - 1) - i];
array[(array.Length - 1) - i] = temp;
}
}

static void ResizeArray(ref int[] array, int n)


{
int[] temp = new int[n];
for (int i = 0; i < temp.Length; i++)
{
if (i >= array.Length)
temp[i] = 0;
else
temp[i] = array[i];
}
array = temp;
}

static void CopyArray(int[] sourceArray, int sourceIndex,


int[] destinationArray, int destinationIndex, int length)
{
int n = 0;
do
{
destinationArray[destinationIndex] =
sourceArray[sourceIndex];
destinationIndex++;
sourceIndex++;
n++;
} while (n < length);
}

Во втором задании были разработаны собственные методы для работы


с массивом такие как: получение первого и последнего вхождения в массив,
получение минимального и максимального элемента массива, получение
суммы элементов массива, получение среднеарифметического значения и
проверка наличия элементы в массиве (см. рис. 2 и листинг 2)
Рисунок 2 – Методы для работы с массивом

Из рисунка 2 видно, что в консоль был выведен исходный массив и


получены результаты работы разработанных функций. Таким образом был
выведен первый элемент массива – 5, последний элемент массива 3,
максимальный элемент – 9, минимальный элемент 1, сумма всех элементов –
71, получено среднее арифметическое – 5, 46, и положительный результат
сравнения.

Листинг 2
static int FirstArray(int[] array)
{
return array[0];
}

static int LastArray(int[] array)


{
return array[array.Length-1];
}

static int MaxArray(int[] array)


{
int max = array[0];
foreach (int a in array)
{
if (max < a)
max = a;
}
return max;
}

static int MinArray(int[] array)


{
int min = array[0];
foreach (int a in array)
{
if (min > a)
min = a;
}
return min;
}

static int SumArray(int[] array)


{
int sum = 0;
foreach (int a in array)
{
sum += a;
}
return sum;
}

static double AvgArray(int[] array)


{
int sum = 0;
foreach (int a in array)
{
sum += a;
}
return (double)sum / array.Length;
}

static bool ContainsArray(int[] array, int element)


{
bool find = false;
foreach (int a in array)
{
if (element == a)
find = true;
}
return find;
}

В третьем задании были разработаны функции для удаления и вставки


элементов в одномерный динамический массив по заданному индексу (см.
рис. 3 и листинг 3)
Рисунок 3 – Удаление и вставка в массив

Из рисунка 3 видно, что на экран консоли выводиться исходный


массив, после чего выводиться функция вставки элемента по индексу и
удаления по индексу.

Листинг 3
static void InsertArray(ref int[] array, int index, int element)
{
if (array.Length < index)
{
Array.Resize(ref array, index+1);
}
array[index] = element;
}

static void DeleteArray(ref int[] array, int index)


{
do
{
array[index] = array[index + 1];
index++;
} while (index < array.Length-1);
Array.Resize(ref array, array.Length - 1);
}

В шестом задании была разработана программа последовательного


числа 7 в одномерном массиве известной длины в направлении от конца
массива к началу, которая возвращает индекс первого вхождения искомого
значения (см. рис. 4 и листинг 4)

Рисунок 4 – Последовательный поиск элемента в массиве

Из рисунка 4 видно, что на экран консоли был выведен исходный


массив и найден индекс первого вхождения числа 7 в массив – 3.

Листинг 4
static int FindElem(int[] array, int element)
{
int index = -1;
for (int i = array.Length - 1; i >= 0; i--)
{
if (element == array[i])
{
index = i;
}
}
return index;
}

В восьмом задании была разработана программа двоичного поиска


числа 50 в одномерном массиве, которая возвращает индекс первого
вхождения искомого значения (см. рис. 5 и листинг 5)

Рисунок 5 – Двоичный поиск элемента в массиве


Из рисунка 5 видно, что на экран консоли был выведен исходный
массив и найден индекс первого вхождения числа 50 в массив – 5.

Листинг 5
static int BinarySearch(int[] array, int searchedValue, int left, int
right)
{
while (left <= right)
{
var middle = (left + right) / 2;

if (searchedValue == array[middle])
{
return middle;
}
else if (searchedValue < array[middle])
{
right = middle - 1;
}
else
{
left = middle + 1;
}
}
//ничего не нашли
return -1;
}

В одиннадцатом задании была разработана программа выборки 5


наибольших элементов из одномерного массива (см. рис. 6 и листинг 6)

Рисунок 6 – поиск наибольших элементов в массиве


Из рисунка 6 видно, что на экран консоли был выведен исходный
массив и найдены 5 наибольших элементов – 9, 8, 8, 7, 7.

Листинг 6
static void MaxElements(int[] array, int k)
{
Array.Sort(array);
Array.Reverse(array);
for (int i = 0; i < k; i++)
{
Console.WriteLine("{0}: {1}", i+1, array[i]);
}
}

3 Вывод
В результате выполнения лабораторной работы были получены и
укреплены знания по работе с одномерными массивами.

Вам также может понравиться