You are on page 1of 7

КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ

ІМЕНІ ТАРАСА ШЕВЧЕНКA


ФАКУЛЬТЕТ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ
Кафедра інтелектуальних технологій

Лабораторна робота №5
з дисципліни «Алгоритмізація та програмування»
з теми : «Масиви STL»
Варіант 1

Виконала студентка
групи КН-12
Пхайко Софія Дмитрівна
Перевірила:
Гамоцька Сніжана Леонідівна

Київ – 2020
Array117. Дан целочисленный массив размера N. Вставить перед каждой его
серией элемент с нулевым значением.
Таблиця 1 –МПЗ
Вхідні Дії Вих.дані
дані
a[i]-цілий 1.Вставити 0 перед першою серією a[i]-цілий
вектор 2.Для i = 1 :Якщо A[i+1] != A[i],то вектор
A.insert(A.begin() + i+1, 0); i++;
3. Для i = 1 : Вивести вектор

Рисунок 1- Схема алгоритму


Текст програми мовою С++:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int i;
vector<int>a{ 1,1,2,5,3 };
a.insert(a.begin(), 0);
for (i = 1; i < a.size()-1; ++i) {
if (a[i - 1] != a[i]) {
a.insert(a.begin()+i+1, 0);
i++;
}
}
for (i = 0; i <= a.size(); ++i) cout << "a[" << i + 1 << "]=" << a[i] << endl;
system("pause");
return 0;
}

Рисунок 2 – Результат роботи програми

Array124. Дано целое число K (> 0) и целочисленный массив размера N.


Поменять местами последнюю серию массива и его серию с номером K. Если
серий в массиве меньше K, то вывести массив без изменений.
Таблиця 1 –МПЗ
Вхідні Дії Вих.дані
дані
vec[i]- 1.Ввести К; vec[i]-
цілий 2.Для і=0: якщо i = 0 та j = -1 ,то tmp.push_back(vec[i]),j+ цілий
вектор, +; вектор
К-ціле 3. Інакше якщо tmp[j] = vec[i] ,то
tmp.push_back(vec[i]),j++;
4.Інакше b.push_back(tmp),tmp.clear(),j = -1,i--;
5.Якщо i = vec.size() – 1 ,то b.push_back(tmp);
6.Якщо K < b.size(),то вивести без змін;
7.Для і=0: вивести vec[i].
Рисунок 1- Схема алгоритму
Текст програми мовою С++:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
unsigned K;
vector<int> vec{ 1,4,7,3,3,6,7,3 };
vector<vector<int>> b;
b.push_back(vec);
cout << "K= "; cin >> K;
vector<int> tmp;
for (int i = 0, j = -1; i < vec.size(); i++)
{
if (i == 0 || j == -1)
{
tmp.push_back(vec[i]);
j++;
}
else if (tmp[j] == vec[i])
{
tmp.push_back(vec[i]);
j++;
}
else
{
b.push_back(tmp);
tmp.clear();
j = -1;
i--;
}
if (i == vec.size() - 1)
b.push_back(tmp);
}
if (K < b.size())
{
for (int i = 0; i < vec.size(); i++)
cout << vec[i] << " ";
}
for (int i = 0; i < vec.size(); i++)
cout << vec[i] << " ";
cout << endl;
system("pause");
}

Рисунок 2 – Результат роботи программи

Array128. Дан целочисленный массив размера N. Преобразовать массив,


увеличив его первую серию наибольшей длины на один элемент.
Таблиця 1 –МПЗ
Вхідні дані Дії Вих.дані
a[i]-цілий 1.Для і=1: якщо a[i - 1] != a[i] ,якщо l a[i]-цілий
вектор > mxl,то mxl = l,emxs = i - 1; вектор
2. l = 0;
3. ++l;
4.Якщо l > mxl, mxl = l,emxs = i - 1;
5. A.insert(A.begin() + mxl, A[ emxs]);
6.Для і=0: вивести a[i].

Рисунок 1- Схема алгоритму


Текст програми мовою С++:
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
vector <int> A{ 1,3,4,3,5,5,5,6 };
int i;
int l = 1, mxl = 1, emxs = 1;
for (i = 1; i < A.size(); ++i)
{
if (A[i - 1] != A[i])
{
if (l > mxl)
{
mxl = l;
emxs = i - 1;
}
l = 0;
}
++l;
}
if (l > mxl)
{
mxl = l;
emxs = i - 1;
}
A.insert(A.begin() + mxl, A[ emxs]);
for (i = 0; i < A.size(); ++i) cout << "a[" << i + 1 << "]=" << A[i] << endl;
return 0;
}

Рисунок 2 – Результат роботи программи

Видалити найменшу серію


Таблиця 1 –МПЗ
Вхідні дані Дії Вих.дані
a[i]-цілий 1.Для і=0 : поки a[i] == a[i + 1] ,то i++, Min++; a[i]-цілий
вектор 2.Якщо i == a.size() – 2 ,то Min++ ,break; вектор
3.Якщо min > Min ,то min = Min, p = a.begin() + i;
4. Min = 1;
5. a.erase(p - min + 1, p + 1);
6.Для і=0 : вивести a[i].
Рисунок 1- Схема алгоритму
Текст програми мовою С++:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> a{ 3,3,5,5,5 };
vector <int> ::iterator p;
int min = a.size(), Min = 1, i;
for (int i = 0; i < a.size() - 1; i++) {
while (a[i] == a[i + 1]) {
if (i == a.size() - 2) {
Min++;
break;
}
i++;
Min++;
}
if (min > Min) {
min = Min;
p = a.begin() + i;
}
Min = 1;
}
a.erase(p - min + 1, p + 1);
for (i = 0; i < a.size(); ++i) cout << "a[" << i + 1 << "]=" << a[i] << endl;
return 0;
}
Рисунок 1- Схема алгоритму

Рисунок 2 – Результат роботи програми

You might also like