diff --git a/lab11/README.md b/lab11/README.md
new file mode 100644
index 0000000..6e773b9
--- /dev/null
+++ b/lab11/README.md
@@ -0,0 +1,14 @@
+# Лабораторна робота № 11
+
+Тема Реалізація програмних засобів оброблення динамічних структур даних та бінарних файлів
+
+Мета роботи полягає у набутті ґрунтовних вмінь і практичних навичок командної (колективної) реалізації програмного забезпечення, розроблення функцій оброблення динамічних структур даних, використання стандартних засобів C++ для керування динамічною пам'яттю та бінарними файловими потоками.
+
+Завдання
+1. У складі команди IT-проекта розробити програмні модулі оброблення динамічної структури даних.
+2. Реалізувати програмний засіб на основі розроблених командою IT-проекта модулів.
+
+Варіант № 1
+
+
+Кропивницький | ЦНТУ | 2023
diff --git a/lab11/Report/Report.pdf b/lab11/Report/Report.pdf
new file mode 100755
index 0000000..17734cf
Binary files /dev/null and b/lab11/Report/Report.pdf differ
diff --git a/lab11/TestSuite/TestSuite.doc b/lab11/TestSuite/TestSuite.doc
new file mode 100755
index 0000000..68c0e64
Binary files /dev/null and b/lab11/TestSuite/TestSuite.doc differ
diff --git a/lab11/prj/ModulesMykhailenko.h b/lab11/prj/ModulesMykhailenko.h
new file mode 100755
index 0000000..1d4c466
--- /dev/null
+++ b/lab11/prj/ModulesMykhailenko.h
@@ -0,0 +1,14 @@
+#include
+#include "struct_type_project_1.h"
+
+using namespace std;
+
+void add(vector&, wstring, wstring, wstring, wstring);
+
+void remove(vector&, wstring);
+
+bool read(vector&, string);
+
+bool save(vector&, string);
+
+void search(vector&, wstring);
diff --git a/lab11/prj/ModulesMykhailenko/ModulesMykhailenko.cbp b/lab11/prj/ModulesMykhailenko/ModulesMykhailenko.cbp
new file mode 100755
index 0000000..47d79af
--- /dev/null
+++ b/lab11/prj/ModulesMykhailenko/ModulesMykhailenko.cbp
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lab11/prj/ModulesMykhailenko/ModulesMykhailenko.cpp b/lab11/prj/ModulesMykhailenko/ModulesMykhailenko.cpp
new file mode 100755
index 0000000..d1b90a3
--- /dev/null
+++ b/lab11/prj/ModulesMykhailenko/ModulesMykhailenko.cpp
@@ -0,0 +1,98 @@
+#include
+#include
+#include
+#include
+#include
+#include
+#include "ModulesMykhailenko.h"
+
+using namespace std;
+
+vector products;
+
+void add(vector &vec, wstring section, wstring sectionName, wstring code, wstring name) {
+ vec.push_back({});
+ Product& back = vec.back();
+ back.section = section;
+ back.sectionName = sectionName;
+ back.code = code;
+ back.name = name;
+}
+
+void remove(vector &vec, wstring record) {
+ bool found = false;
+ for (vector::iterator it = vec.begin(); it != vec.end();) {
+ if (it->code == record) {
+ found = true;
+ it = vec.erase(it);
+ } else
+ ++it;
+ }
+
+ if (found)
+ wcout << L"Видалено." << endl;
+ else
+ wcout << L"Не знайдено." << endl;
+}
+
+bool read(vector &vec, string file) {
+ vector> content;
+ vector row;
+ wstring line, word;
+
+ wifstream data;
+ data.open(file);
+
+ data.imbue(locale(locale(), new codecvt_utf8));
+
+ if (data.is_open()) {
+ while(getline(data, line)) {
+ row.clear();
+
+ wstringstream str(line);
+
+ while(getline(str, word, L'\u0009'))
+ row.push_back(word);
+ content.push_back(row);
+ }
+ } else
+ return false;
+
+ for (unsigned int i = 0; i < content.size(); i++) {
+ vec.push_back({});
+ Product& back = vec.back();
+ back.section = content[i][0];
+ back.sectionName = content[i][1];
+ back.code = content[i][2];
+ back.name = content[i][3];
+ }
+
+ return true;
+}
+
+bool save(vector &vec, string file) {
+ wofstream data;
+ data.open(file);
+
+ data.imbue(locale(locale(), new codecvt_utf8));
+
+ if (!data)
+ return false;
+
+ for (unsigned int i = 0; i < vec.size(); i++)
+ data << vec[i].section << L'\u0009' << vec[i].sectionName << L'\u0009' << vec[i].code << L'\u0009' << vec[i].name << endl;
+
+ return true;
+}
+
+void search(vector &vec, wstring record) {
+ bool found = false;
+ for (unsigned int i = 0; i < vec.size(); i++) {
+ if (vec[i].code == record) {
+ found = true;
+ wcout << vec[i].code << L": " << vec[i].name << L", належить до розділу " << vec[i].section << L" (" << vec[i].sectionName << L")" << endl;
+ }
+ }
+ if (!found)
+ wcout << L"Не знайдено." << endl;
+}
diff --git a/lab11/prj/prj_1_Mykhailenko/main.cpp b/lab11/prj/prj_1_Mykhailenko/main.cpp
new file mode 100755
index 0000000..1cd68a5
--- /dev/null
+++ b/lab11/prj/prj_1_Mykhailenko/main.cpp
@@ -0,0 +1,84 @@
+#include
+#include
+#include
+#include
+#include "ModulesMykhailenko.h"
+
+using namespace std;
+
+int main() {
+
+ ios_base::sync_with_stdio(false);
+ wcout.imbue(locale(locale(), new codecvt_utf8));
+ wcin.imbue(locale(locale(), new codecvt_utf8));
+ setlocale(LC_ALL, "");
+
+ read(products, "data.tsv");
+
+ while (true) {
+ int choice;
+
+ wcout << L"Довідник кодів товарів згідно з УКТЗЕД" << endl <<
+ L"1. Пошук запису" << endl <<
+ L"2. Зберігання довідника у заданий файл" << endl <<
+ L"3. Додавання нового запису у довідник" << endl <<
+ L"4. Вилучення запису із довідника" << endl <<
+ L"5. Завершення роботи програми і запис даних" << endl <<
+ L"Введіть необхідну дію: ";
+
+ wcin >> choice;
+ wcin.ignore();
+ switch (choice) {
+ case 1:
+ {
+ wstring record;
+ wcout << L"Введіть номер запису: ";
+ getline(wcin, record);
+ search(products, record);
+ break;
+ }
+ case 2:
+ {
+ wstring path;
+ wcout << L"Введіть шлях до файла: ";
+ getline(wcin, path);
+ wstring_convert, wchar_t> converter;
+ string converted_path = converter.to_bytes(path);
+ save(products, converted_path);
+ break;
+ }
+ case 3:
+ {
+ wstring section;
+ wstring sectionName;
+ wstring code;
+ wstring name;
+ wcout << L"Введіть код розділу: ";
+ getline(wcin, section);
+ wcout << L"Введіть назву розділу: ";
+ getline(wcin, sectionName);
+ wcout << L"Введіть код товару: ";
+ getline(wcin, code);
+ wcout << L"Введіть назву товару: ";
+ getline(wcin, name);
+ add(products, section, sectionName, code, name);
+ break;
+ }
+ case 4:
+ {
+ wstring record;
+ wcout << L"Введіть номер запису: ";
+ getline(wcin, record);
+ remove(products, record);
+ break;
+ }
+ case 5:
+ {
+ save(products, "data.tsv");
+ return 0;
+ }
+ default:
+ wcout << L"Помилкові дані." << endl;
+ }
+ }
+}
diff --git a/lab11/prj/prj_1_Mykhailenko/prj_1_Mykhailenko.cbp b/lab11/prj/prj_1_Mykhailenko/prj_1_Mykhailenko.cbp
new file mode 100755
index 0000000..4f2180c
--- /dev/null
+++ b/lab11/prj/prj_1_Mykhailenko/prj_1_Mykhailenko.cbp
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lab11/prj/struct_type_project_1.h b/lab11/prj/struct_type_project_1.h
new file mode 100755
index 0000000..4e3ffb1
--- /dev/null
+++ b/lab11/prj/struct_type_project_1.h
@@ -0,0 +1,18 @@
+#ifndef STRUCT_TYPE_PROJECT_1_H_INCLUDED
+#define STRUCT_TYPE_PROJECT_1_H_INCLUDED
+
+#include
+#include
+
+using namespace std;
+
+struct Product {
+ wstring section;
+ wstring sectionName;
+ wstring code;
+ wstring name;
+};
+
+extern vector products;
+
+#endif // STRUCT_TYPE_PROJECT_1_H_INCLUDED
diff --git a/lab11/tasks/L11-var--001.jpg b/lab11/tasks/L11-var--001.jpg
new file mode 100755
index 0000000..69d0b53
Binary files /dev/null and b/lab11/tasks/L11-var--001.jpg differ