Ім'я файлу: Звіт_Лабораторна_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

скачати

© Усі права захищені
написати до нас