![]() | Ім'я файлу: Звіт_Лабораторна_7_Левковець_Д_О.docx Розширення: docx Розмір: 180кб. Дата: 14.11.2021 скачати Пов'язані файли: Звіт_Лабораторна_9_Левеовець_Д_О.docx Звіт_Лабораторна_8_Левковець_Д_О.docx Національний університет Біоресурсів та природокористування Факультету інформаційних технологій Лабораторна робота №7 Студента групи ІПЗ-21011бск Виконав: Левковець Д.О. Дата виконання: 23.10.21 Перевірив: Міловідов Ю.О. Звіт По лабораторній роботі №7 Варіант -10 Тема: ДИНАМІЧНІ СТРУКТУРИ ДАНИХ. СТРУКТУРА ДАНИХ ТИПУ «ЗВ’ЯЗНИЙ СПИСОК» Мета: дослідити властивості та придбати практичні навички моделювання зв’язаних динамічних структур даних і роботи з ними. Завдання: Розробити програму для роботи з двонаправленими зв’язними списками. Кожен елемент списку містить посилання на наступний і попередній елементи у списку. Програма має забезпечувати введення і побудову списку. Всі операції над динамічними структурами мають супроводжуватися відповідним виведенням на екран. За своїм варіантом: Текст допомоги для деякої програми організований як лінійний список. Кожна компонента тексту допомоги містить термін (слово ) і текст, що містить пояснення до цього терміну. Скласти програму, яка забезпечує: • вивід пояснювального тексту для заданого терміну; • можливість додавання нових термінів і пояснень. Програма повинна забезпечувати діалог за допомогою меню і контроль помилок при введенні. Виконання завдання. #include #include #include #include using namespace std; const int exp_row = 5; const int exp_col = 500; const int term_length = 50; struct text { char termin[term_length]; char explan[exp_row][exp_col]; text* next; text* pred; }; text* first, * last, * temp; void addTerm() { cout << "===========================" << endl; cout << '\n'; cout << "Назва термiну:" << endl; cout << '\n'; cout << "< "; cin.clear(); cin.ignore(); rename_term:cin.getline(temp->termin, sizeof(temp->termin)); if (cin.fail()) { cin.clear(); cin.ignore(); cout << "===========================" << endl; cout << '\n'; cout << "Помилка. Кiлькiсть символiв в рядку не має перевищювати " << term_length << " символiв. Напишiть назву iще раз." << endl; cout << '\n'; cout << "===========================" << endl; goto rename_term; } cout << "===========================" << endl; cout << '\n'; cout << "Пояснення:" << endl; cout << '\n'; cout << "< "; for (int i = 0; i < exp_row; i++) { cin.getline(temp->explan[i], sizeof(temp->explan[i])); if (cin.fail()) { cin.clear(); cin.ignore(); cout << "===========================" << endl; cout << '\n'; cout << "Помилка. Кiлькiсть символiв в рядку не має перевищювати " << exp_col << " символiв. Напишiть рядок пояснення iще раз." << endl; cout << '\n'; cout << "===========================" << endl; i--; } cin.clear(); } temp->next = new text; temp->next->pred = temp; temp = temp->next; last = temp; } void viewAllTerms() { temp = first; if (temp == last) { cout << "===========================" << endl; cout << "Помилкаю. Нема існуючих термінів." << endl; } while (temp != last) { cout << "Термiн: " << temp->termin << endl; cout << "Пояснення: " << endl; for (int i = 0; i < exp_row; i++) { cout << "\t" << temp->explan[i] << "\n"; } cout << "_______________________________________________" << endl; temp = temp->next; } } void viewTerm() { char termName[term_length]; bool findTerm = false; cout << "===========================" << endl; cout << '\n'; cout << "Введiть назву термiну: "< cout << '\n'; cout << "< "; cin.clear(); cin.ignore(); rename_term:cin.getline(termName, sizeof(termName)); if (cin.fail()) { cin.clear(); cin.ignore(); cout << "===========================" << endl; cout << '\n'; cout << "Помилка. Кiлькiсть символiв в рядку не має перевищювати " << term_length << " символiв. Напишiть назву iще раз." << endl; cout << '\n'; cout << "===========================" << endl; goto rename_term; } temp = first; while (temp != last) { if (strcmp(termName, temp->termin) == 0) { findTerm = true; cout << "Термiн: " << temp->termin << endl; cout << "Пояснення:" << endl; for (int i = 0; i < exp_row; i++) { cout << "\t" << temp->explan[i] << endl; } cout << "__________________________________________________" << endl; } temp = temp->next; } if (!findTerm) { cout << "===========================" << endl; cout << "Помилка. Шуканий термін не знайдено." << endl; } } void main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); int n; temp = new text; first = temp; last = temp; first->pred = NULL; string str; cout << "===========================" << endl; cout << '\n'; menu:cout << "1) Додати термiн" << endl; cout << "2) Перегляд усiх термiнiв" << endl; cout << "3) Перегляд одного термiну" << endl; cout << "4) Вихід" << endl; cout << "< "; cin >> str; cout << '\n'; if (!isdigit(str[0])) { cout << "===========================" << endl; cout << '\n'; cout << "Помилка. Значення повинно бути числом вiд 1 до 4." << endl; cout << '\n'; cout << "===========================" << endl; goto menu; } n = atoi(str.c_str()); switch (n) { case 1: addTerm(); break; case 2: viewAllTerms(); break; case 3: viewTerm(); break; case 4: return; break; default: break; } goto menu; } Запуск програми. Для початку, ми заносимо 5 термінів у програму, продемонструю це в декількох скріншотах. ![]() Додано термін Алгоритм ![]() Додано термін Сортування. ![]() Додано термін Масив ![]() Додано термін Структура ![]() Додано термін Шаблон Отже, тепер ми переглянемо усі занесені терміни. ![]() Тепер переглянемо будь-який термін за його назвою. ![]() І на останок перевіримо помилки, які можуть виникнути. Помилка в пошуку терміну, якщо користувач неправильно ввів термін. ![]() Також присутні помилки, якщо було введено занадто багато символів в назві терміну, або поясненні ![]() І виходимо із програми ![]() Київ - 2021 |