Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ат 22 2з пр3-1

.docx
Скачиваний:
2
Добавлен:
22.01.2024
Размер:
80.14 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

СТАРООСКОЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ

ИМ. А.А. УГАРОВА

(филиал) федерального государственного автономного образовательного

учреждения высшего образования

«Национальный исследовательский технологический университет «МИСиС»

​Лабораторная работа № 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;

}

Соседние файлы в предмете Основы программирования