ат 22 2з пр3-1
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
СТАРООСКОЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ
ИМ. А.А. УГАРОВА
(филиал) федерального государственного автономного образовательного
учреждения высшего образования
«Национальный исследовательский технологический университет «МИСиС»
Лабораторная работа № 3
на тему
«Работа с одномерными массивами»
Выполнил: Студент группы № АТ 22-2з
.
Старый Оскол, 2024
Цель работы:
1) Получение практических навыков при работе с массивами.
2) Получение практических навыков при работе с указателями.
Вариант 13
Задание
1) Сформировать массив из n элементов с помощью датчика случайных чисел (n задается пользователем с клавиатуры).
2) Распечатать полученный массив.
3) Выполнить удаление указанных элементов из массива.
4) Вывести полученный результат.
5) Выполнить добавление указанных элементов в массив.
6) Вывести полученный результат.
7) Выполнить перестановку элементов в массиве.
8) Вывести полученный результат.
9) Выполнить поиск указанных в массиве элементов и подсчитать коли-чество сравнений, необходимых для поиска нужного элемента.
10) Вывести полученный результат.
11) Выполнить сортировку массива указанным методом.
12) Вывести полученный результат.
13) Выполнить поиск указанных элементов в отсортированном массиве и подсчитать количество сравнений, необходимых для поиска нужного эле-мента.
14) Вывести полученный результат.
#include <iostream>
#include <cstdlib>
#include <climits>
// Функция для сортировки методом "Простой обмен" (Bubble Sort)
void bubbleSort(int* arr, int size) {
for (int i = 0; i < size - 1; ++i) {
for (int j = 0; j < size - i - 1; ++j) {
// Если текущий элемент больше следующего, меняем их местами
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
setlocale(LC_ALL, "RU");
// Ввод размера массива
int n;
std::cout << "Введите размер массива: ";
std::cin >> n;
// Создание массива и заполнение случайными числами
int* array = new int[n];
std::cout << "Исходный массив:\n";
for (int i = 0; i < n; ++i) {
array[i] = rand() % 100; // Заполняем случайными числами от 0 до 99
std::cout << array[i] << " ";
}
std::cout << std::endl;
// Поиск первого четного элемента
int firstEvenIndex = -1;
for (int i = 0; i < n; ++i) {
if (array[i] % 2 == 0) {
firstEvenIndex = i;
break;
}
}
if (firstEvenIndex != -1) {
std::cout << "Первый четный элемент: " << array[firstEvenIndex] << " (индекс " << firstEvenIndex << ")\n";
}
else {
std::cout << "В массиве нет четных элементов.\n";
}
// Ввод номера K и количества добавляемых элементов
int k, elementsToAdd;
std::cout << "Введите количество элементов K для добавления в начало: ";
std::cin >> elementsToAdd;
// Создание временного массива для расширения
int* tempArray = new int[n + elementsToAdd];
// Заполнение временного массива новыми элементами
for (int i = 0; i < elementsToAdd; ++i) {
std::cout << "Введите новый элемент для добавления: ";
std::cin >> tempArray[i];
}
// Заполнение временного массива оставшимися элементами
for (int i = 0; i < n; ++i) {
tempArray[i + elementsToAdd] = array[i];
}
// Ввод номера K и количества удаляемых элементов N
int elementsToRemove;
std::cout << "Введите номер K (начиная с 0) и количество удаляемых элементов N: ";
std::cin >> k >> elementsToRemove;
// Проверка корректности ввода
if (k < 0 || k >= n + elementsToAdd || elementsToRemove <= 0 || k + elementsToRemove > n + elementsToAdd) {
std::cout << "Некорректные входные данные.\n";
delete[] array; // Освобождение выделенной памяти
delete[] tempArray; // Освобождение временного массива
return 1; // Возвращаем ненулевой код ошибки
}
// Удаление N элементов, начиная с номера K
for (int i = k; i < n + elementsToAdd - elementsToRemove; ++i) {
tempArray[i] = tempArray[i + elementsToRemove];
}
// Поиск минимального и максимального элементов
int minIndex = 0, maxIndex = 0;
for (int i = 1; i < n + elementsToAdd - elementsToRemove; ++i) {
if (tempArray[i] < tempArray[minIndex]) {
minIndex = i;
}
if (tempArray[i] > tempArray[maxIndex]) {
maxIndex = i;
}
}
// Обмен значениями минимального и максимального элементов
int temp = tempArray[minIndex];
tempArray[minIndex] = tempArray[maxIndex];
tempArray[maxIndex] = temp;
// Вызов функции для сортировки массива методом "Простой обмен"
bubbleSort(tempArray, n + elementsToAdd);
// Печать измененного и отсортированного массива
std::cout << "Массив после всех операций и сортировки:\n";
for (int i = 0; i < n + elementsToAdd; ++i) {
std::cout << tempArray[i] << " ";
}
std::cout << std::endl;
// Освобождение выделенной памяти
delete[] array;
delete[] tempArray;
return 0;
}