ат 22 2з пр3
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
СТАРООСКОЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ
ИМ. А.А. УГАРОВА
(филиал) федерального государственного автономного образовательного
учреждения высшего образования
«Национальный исследовательский технологический университет «МИСиС»
Лабораторная работа № 3
на тему
«Работа с одномерными массивами»
Выполнил: Студент группы № АТ 22-2з
.
Старый Оскол, 2024
Цель работы:
1) Получение практических навыков при работе с массивами.
2) Получение практических навыков при работе с указателями.
Вариант 8
Задание
1) Сформировать массив из n элементов с помощью датчика случайных чисел (n задается пользователем с клавиатуры).
2) Распечатать полученный массив.
3) Выполнить удаление указанных элементов из массива.
4) Вывести полученный результат.
5) Выполнить добавление указанных элементов в массив.
6) Вывести полученный результат.
7) Выполнить перестановку элементов в массиве.
8) Вывести полученный результат.
9) Выполнить поиск указанных в массиве элементов и подсчитать коли-чество сравнений, необходимых для поиска нужного элемента.
10) Вывести полученный результат.
11) Выполнить сортировку массива указанным методом.
12) Вывести полученный результат.
13) Выполнить поиск указанных элементов в отсортированном массиве и подсчитать количество сравнений, необходимых для поиска нужного эле-мента.
14) Вывести полученный результат.
#include <iostream>
#include <cstdlib>
using namespace std;
const int Size = 100;
int main()
{
int mas[Size];
int n;
cout << "Enter n: ";
cin >> n;
for (int i = 0; i < n; i++)
mas[i] = rand() % 10;
cout << "1. Array:" << endl;
for (int i = 0; i < n; i++)
cout << mas[i] << " ";
cout << endl;
for (int i = 0; i < n; i++)
if (mas[i] % 2 != 0) {
for (int j = i; j < n - 1; j++) {
mas[j] = mas[j + 1];
}
n--;
i--;
}
cout << "2. Array:" << endl;
for (int i = 0; i < n; i++)
cout << mas[i] << " ";
cout << endl;
int* _mas = new int[Size];
int k;
cout << "Enter k: ";
cin >> k;
if (k > (Size - n)) {
cout << "ERROR k > " << Size - n << ".\n";
exit(EXIT_FAILURE);
}
for (int i = 0; i < k; i++)
*(_mas + i) = rand() % 10;
n += k;
for (int i = n + k - 1; i >= k; i--)
mas[i] = mas[i - k];
for (int i = 0; i < k; i++)
mas[i] = *(_mas + i);
delete[] _mas;
cout << "3. Array:" << endl;
for (int i = 0; i < n; i++)
cout << mas[i] << " ";
cout << endl;
for (int i = 0, j = n - 1; i < j; ++i, --j) {
int t = mas[i];
mas[i] = mas[j];
mas[j] = t;
}
cout << "4. Array:" << endl;
for (int i = 0; i < n; i++)
cout << mas[i] << " ";
cout << endl;
int count_iter = 0;
int index_ch = 0;
for (int i = 0; i < n; i++)
if (mas[i] % 2 == 0) {
index_ch = i;
break;
}
else count_iter++;
cout << "5. Elem: " << mas[index_ch] << endl
<< "Kolvo iteraciy: " << count_iter << endl;
for (int i = 1; i < n; i++)
for (int j = n - 1; j >= i; j--)
if (mas[j] < mas[j - 1]) {
int temp = mas[j];
mas[j] = mas[j - 1];
mas[j - 1] = temp;
}
cout << "6. Array:" << endl;
for (int i = 0; i < n; i++)
cout << mas[i] << " ";
cout << endl;
int find_elem, find_index;
count_iter = 0;
cout << "Enter find: ";
cin >> find_elem;
int first = 0;
int last = n - 1;
int mid;
while (true) {
mid = (first + last) / 2;
if (mas[mid] == find_elem) {
find_index = mid;
break;
}
else {
if (first > last) {
cout << "Not element." << endl;
break;
}
else if (mas[mid] > find_elem)
last = mid;
else
first = mid + 1;
count_iter++;
}
}
cout << "7. Index: " << find_index + 1 << endl
<< "Kolvo iteraciy: " << count_iter << endl;
return 0;
}