Лабораторная работа по программированию Студентка гр. Hsm-204-4 Холдорова М. А. Ташкент-2023 2-Лабораторная работа


Download 332.73 Kb.
Sana13.04.2023
Hajmi332.73 Kb.
#1355502
TuriЛабораторная работа
Bog'liq
Лабораторная работа 2


МИНИСТЕРСТВО ПО РАЗВИТИЮ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И КОММУНИКАЦИЙ РЕСПУБЛИКИ УЗБЕКИСТАН
ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ ИМЕНИ МУХАММАДА АЛЬ-ХОРЕЗМИ


Лабораторная работа
по программированию
Выполнила: Студентка гр. HSM-204-4
Холдорова М.А.


Ташкент-2023
2-Лабораторная работа
СТАНДАРТНЫЕ АЛГОРИТМЫ И ИТЕРАТОРЫ БИБЛИОТЕКИ STL
Цель работы: Изучить стандартные алгоритмы и итераторов библиотеки stl и разработка алгоритмов выполнения задач с этими темами.
Поставленная задача: Создание элементов стандартных алгоритмов и итераторов на языке Visual C++, разработка программы выполнения различных действий на нем.
Порядок работы:

  • Изучение теоретических данных лабораторной работы;

  • Разработка алгоритма заданной задачи;

  • Создание программы в среде программирования Visual C++;

  • Проверка результатов;

  • Подготовка и представление отчета для лабораторной работы.

Задание 1


Cоздать два контейнера vector и заполнитm их случайными числами в дипазоне [-25; +15] с помощью функции generate_n() (N1=20, N2=3). С помощью итераторов вывести на экран содержимое контейнера. Определить первое вхождение последовательности элементов 2-го контейнера в первом (search ()).
#include
#include
#include
#include

int main()


{
// Создание двух пустых контейнеров типа vector
std::vector container1(20);
std::vector container2(3);

// Создание генератора случайных чисел и заполнение первого контейнера


std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(-25, 15);
std::generate_n(container1.begin(), 20, [&](){return dis(gen);});

// Заполнение второго контейнера


std::generate_n(container2.begin(), 3, [&](){return dis(gen);});

// Вывод содержимого первого контейнера


std::cout << "Container 1: ";
for (auto it = container1.begin(); it != container1.end(); ++it)
{
std::cout << *it << " ";
}
std::cout << std::endl;

// Вывод содержимого второго контейнера


std::cout << "Container 2: ";
for (auto it = container2.begin(); it != container2.end(); ++it)
{
std::cout << *it << " ";
}
std::cout << std::endl;

// Поиск первого вхождения последовательности элементов второго контейнера в первом


auto result = std::search(container1.begin(), container1.end(), container2.begin(), container2.end());
if (result != container1.end())
{
std::cout << "The sequence from container 2 was found starting at index " << std::distance(container1.begin(), result) << " of container 1." << std::endl;
}
else
{
std::cout << "The sequence from container 2 was not found in container 1." << std::endl;
}

return 0;


}

Задание 2


1) Создайте динамический массив из N(N=20 - вводится пользователем) элементов целочисленного типа с значением равным 5.
2) Вывести на экран содержимое контейнера. Для этого создайте шаблонную функцию.
3) Содержимое массива заменить случайными числами из интервала [a;b] с помощью шаблонной функции generate() из библиотеки algorithm.
4) Вывести на экран содержимое контейнера

5) Вывести на экран максимальное значение из всех элементов массива с помощью шаблонной функции max_element() из библиотеки algorithm


#include


#include
#include
#include
#include

using namespace std;


// Функция для вывода содержимого контейнера


template
void printContainer(const T& container)
{
for (const auto& elem : container)
{
cout << elem << " ";
}
cout << endl;
}

int main()


{
srand(time(0)); // инициализация генератора случайных чисел

int N, a, b;


cout << "Введите размер массива N: ";
cin >> N;
cout << "Введите интервал для случайных чисел [a, b]: ";
cin >> a >> b;

// Создание динамического массива из N элементов, каждый из которых равен 5


vector arr(N, 5);

// Вывод содержимого массива


cout << "Исходный массив: ";
printContainer(arr);

// Замена содержимого массива случайными числами из интервала [a, b]


generate(arr.begin(), arr.end(), [a, b]() { return rand() % (b - a + 1) + a; });

// Вывод содержимого массива после замены


cout << "Массив со случайными числами: ";
printContainer(arr);

// Поиск максимального элемента массива


auto maxElem = max_element(arr.begin(), arr.end());

// Вывод максимального элемента массива


cout << "Максимальный элемент массива: " << *maxElem << endl;

return 0;


}

Задание 3



  1. Заполните случайными n числами очередь и найдите максимальный элемент в этой очереди.

#include


#include
#include
#include
using namespace std;

int *findBiggest(deque& nQ, int places)


{
int test;
int big=0;
for(int i=0; i
{
test = nQ.front();
cout << "Place[" << i << "]: \t" << test << endl;
nQ.pop_front();
if(test > big)
big = test;
}
cout << "\nThe biggest number is: " << big << endl;
return 0;
}

int main()


{
srand (time(NULL));
deque nQ;
for(int i=0; i<20; i++)
{
nQ.push_back(rand() % 10000);
}
findBiggest(nQ, 20);
system("pause");
return 0;
}

Download 332.73 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling