Практическая работа №2. Библиотека stl. Контейнеры. Последовательные контейнеры array, vector, list, forward list, deque


Download 0.94 Mb.
Sana30.04.2023
Hajmi0.94 Mb.
#1410385
TuriПрактическая работа
Bog'liq
музаффаров ислом


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

Группа: SWD207-1
4-лабораторная работа
По предмету: Программирование II
Выполнил:Музаффаров Ислом.
Приняла: Xaydarova Marxamat.
САМОСТОЯТЕЛЬНАЯ ПРАКТИЧЕСКАЯ РАБОТА №2.
Библиотека STL. Контейнеры. Последовательные контейнеры array, vector, list, forward_list, deque.
Задание 1. Выполнить следующее:
1. Создать объект-контейнер в соответствии с вариантом задания и заполнить его данными в указанном количестве и в интервале с помощью генератора случайных чисел , тип которых определяется вариантом задания.
2. Вывести содержимое контейнера на экран.
3. Изменить контейнер, удалив из него (см. таб. пункт 3) элемент
4. Затем в конец добавит (см. таб. Пункт 4.) элемент.
5. Вывести содержимое контейнера на экран, используя для доступа к его элементам итераторы.
6. Изменить первый контейнер, удалив из него 3 элемента начиная с N -го элемента (например, если N=2, то начиная c 2 элемента, т.е. 2-ой, 3-ий и 4-тые элементы должны быт удалены.).
7. Создать второй контейнер этого же класса (c размерностью 1-го после выполнения 6 пункта) и заполнить его данными того же типа, что и первый контейнер.
8. Сравнить оба контейнера.
9. Меньшее из них добавит к в конец большего.
10. Просмотрет оба контейнера.

Задание 1. Выполнить следующее:
1. Создать объект-контейнер в соответствии с вариантом задания и заполнить его данными в указанном количестве и в интервале с помощью генератора случайных чисел , тип которых определяется вариантом задания.
2. Просмотреть контейнер.
3. Изменить контейнер, удалив из него (см. таб. ) элемент
4. Затем в конец добавит (см. таб.) элемент.
5. Просмотреть контейнер, используя для доступа к его элементам итераторы.
6. Изменить первый контейнер, удалив из него N-7 элементов до заданного N (если N>8) или N+3 элементов после заданного N.
7. Создать второй контейнер этого же класса (c размерностью 1-го после выполнения 6 пункта) и заполнить его данными того же типа, что и первый контейнер.
8. Сравнить оба контейнера.
9. Меньшее из них добавит к в конец большего.
10. Просмотрет оба контейнера.

#include


#include
#include
#include
#include
#include
#include

std::vector make_vector( const size_t size, const double min, const double max )


{
std::vector v( size );

std::random_device rd;


std::uniform_real_distribution dist( min, max );
std::mt19937 eng( std::random_device{}( ) );

for ( auto i = 0; i < size; ++i )


{
v[i] = dist( eng );
}

return v;


}

void print_vector( const std::vector & v, const std::string & msg )


{
std::cout << std::endl << msg << ":\n";
for ( auto it = v.begin( ); it != v.end( ); ++it )
{
std::cout << *it << " ";
}

std::cout << std::endl;


}

int main( int argc, char ** argv )


{
setlocale( LC_ALL, "ru" );

const size_t vector_size = 25;


const size_t N = 4;
const double min = -100;
const double max = 100;

// 1. и 2.


std::vector vec = make_vector( vector_size, min, max );
print_vector( vec, "Сгенерированный вектор" );

// 3.
size_t del_index = 9;


auto del_pos = std::next( vec.begin(), del_index );
vec.erase( del_pos );

// 4.
auto min_elem = *std::min_element( vec.begin( ), vec.end( ) );


vec.push_back( min_elem );

// 5.
print_vector( vec, "Вектор после удаления 10го элемента и добавления минимального" );

// 6.
auto del_count = N + 3;
auto del_beg = std::next( vec.begin( ), N + 1 );
auto del_end = std::next( del_beg, del_count );
vec.erase( del_beg, del_end );

// 7.
std::vector new_vec = make_vector( vec.size( ), min, max );

// 8. и 9.
std::sort( vec.begin( ), vec.end( ) );
std::sort( new_vec.begin( ), new_vec.end( ) );
if ( vec < new_vec )
{
std::copy( vec.begin( ), vec.end( ), std::back_inserter( new_vec ) );
}
else
{
std::copy( new_vec.begin( ), new_vec.end( ), std::back_inserter( vec ) );
}

// 10.
print_vector( vec, "Первый вектор после сравнения" );


print_vector( new_vec, "Второй вектор после сравнения" );

return 0;


}

Задание 2.
12. Используя динамический массив vector составьте программу для замены максимального и минимального элементов массива.
#include
#include

using namespace std;

int main() {
int n;
cout << "Enter the number of positions to shift: ";
cin >> n;

vector arr = {1, 2, 3, 4, 5}; // исходный массив


int size = arr.size();

// сдвигаем элементы на n позиций влево


for (int i = 0; i < n; i++) {
int temp = arr[0];
for (int j = 0; j < size - 1; j++) {
arr[j] = arr[j + 1];
}
arr[size - 1] = temp;
}

// выводим результат


cout << "Shifted array: ";
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;

return 0;


}

Download 0.94 Mb.

Do'stlaringiz bilan baham:




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