АіМО ЛР. Звіт ЛР№2 АіМО Ярмолюк 3ОК1. Робота зі стеками та чергами
Скачать 42.72 Kb.
|
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ВІННИЦЬКИЙ ТЕХНІЧНИЙ КОЛЕДЖВідділення комп’ютерне Циклова комісія інформатики та інформаційних комп’ютерних технологій «АЛГОРИТМИ І МЕТОДИ ОБЧИСЛЕНЬ» ЗВІТПрактична (Лабораторна) робота № 7 на тему: «Робота зі стеками та чергами» Виконав студент групи: 3ОК1 ЯрмолюкОлексанр Дата виконання: 15.11.2021р Перевірив: Шевчук В.В Дата захисту: __.__.__р. Оцінка:_____ _______ підпис ВІННИЦЯ 2021Мета: набуття практичних вмінь та навичок по роботі з стеками та чергами. Завдання 1 #include Using namespace std; #define STACK_SIZE 5 Typedef int TEIStack; Typedef struct { TEIStack storage[STACK_SIZE]; Int PTS; } Tstack; Void initStack(Tstack& stk) { Stk.PTS = -1; // Встановлюємо «вказівник» верхівки стека в -1 } Bool isOverflow(int p) { If (p == (STACK_SIZE – 1)) return true; // Якщо «вказівник» вершина стека дорівнює max розміру масиву -1, то стек повністю заповнений Else return false; // Стек повінстю заповнений } Bool isEmpty(int p) { If (p == -1) return true; Else return false; } Bool PUSH(Tstack& stk, TEIStack newE1) { If (isOverflow(stk.PTS)) return false; // Додати не можна, стек переповнений Stk.PTS++; // Збільшуємо «вказівники» вершини стека на 1, це місце додавання нового елемента Stk.storage[stk.PTS] = newE1; // Додаємо новий елмент Return true; } Bool POP(Tstack& stk, TEIStack& el) { If (isEmpty(stk.PTS)) return false; // Витягти не можна, стек порожній El = stk.storage[stk.PTS]; // Витягли елмент в змінну е1 Stk.PTS--; // Зменшуємо «вказівник» вершини стека на 1 Return true; } Void showStack(Tstack stk) { For (int i = 0; i <= stk.PTS; i++) Cout << stk.storage[i] << « «; Cout << endl; Cout << «Поточна позиція верхівки стеку: « << stk.PTS << endl; } Int main() { Char ch; Setlocale(LC_CTYPE, «ukr»); Cout << «Практична робота №1 \n» << endl; Cout << «Виберіть команду: \n» << endl; Cout << «1. Добавити елемент до стеку \n» << endl; Cout << «2. Вилучити елемент зі стеку \n» << endl; Cout << «3. Перевірити чи стек порожній \n» << endl; Cout << «4. Перевірити чи стек переповнений \n» << endl; Cout << «5. Вийти з програми \n» << endl; Cin >> ch; Cout << endl; Tstack arrStack; TEIStack stackE1; initStack(arrStack); do { switch (ch) { case ‘1’: { Cout << endl; Cout << «Введіть значення елемента:> «; Cin >> stackE1; Cout << endl; If (PUSH(arrStack, stackE1)) Cout << «Елемент успішно додано до стека « << endl; Else cout << «Стек переповнений « << endl; showStack(arrStack); } Break; Case ‘2’: { If (!POP(arrStack, stackE1)) Cout << «Стек пустий « << endl; Else cout << «Елемент вилучено « << stackE1 << endl; showStack(arrStack); cout << endl; } Break; Case ‘3’: { If (isEmpty(arrStack.PTS)) Cout << «Стек пустий « << endl; Else cout << «Стек непустий» << endl; } Break; Case ‘4’: { If (isOverflow(arrStack.PTS)) Cout << «Стек переповнений « << endl; Else cout << «Стек непереповнений» << endl; } Break; Case ‘5’: exit(0); Break; } Cout << «Для продовження натисніть « << endl; Cin >> ch; } while (true); } Завдання 2 #include using namespace std; #define STACK_SIZE 5 typedef int TEIStack; typedef struct { TEIStack storage[STACK_SIZE]; int PTS; } TStack; void initStack(TStack& stk) { stk.PTS = -1; // Встановлюємо "вказівник" верхівки стека в -1 } bool isOverflow(int p) { if (p == (STACK_SIZE - 1)) return true; // Якщо "вказівник" вершина стека дорівнює max розміру масиву -1, то стек повністю заповнений else return false; // Стек повінстю заповнений } bool isEmpty(int p) { if (p == -1) return true; else return false; } bool PUSH(TStack& stk, TEIStack newE1) { if (isOverflow(stk.PTS)) return false; // Додати не можна, стек переповнений stk.PTS++; // Збільшуємо "вказівники" вершини стека на 1, це місце додавання нового елемента stk.storage[stk.PTS] = newE1; // Додаємо новий елмент return true; } bool POP(TStack& stk, TEIStack& el) { if (isEmpty(stk.PTS)) return false; // Витягти не можна, стек порожній el = stk.storage[stk.PTS]; // Витягли елмент в змінну е1 stk.PTS--; // Зменшуємо "вказівник" вершини стека на 1 return true; } void showStack(TStack stk) { for (int i = 0; i <= stk.PTS; i++) cout << stk.storage[i] << " "; cout << endl; cout << "Поточна позиція верхівки стеку: " << stk.PTS << endl; } int main() { char ch; setlocale(LC_CTYPE, "ukr"); cout << "Практична робота №1 \n" << endl; cout << "Виберіть команду: \n" << endl; cout << "1. Добавити елемент до стеку \n" << endl; cout << "2. Вилучити елемент зі стеку \n" << endl; cout << "3. Перевірити чи стек порожній \n" << endl; cout << "4. Перевірити чи стек переповнений \n" << endl; cout << "5. Вийти з програми \n" << endl; cin >> ch; cout << endl; TStack arrStack1, arrStack2; TEIStack stackE1; initStack(arrStack1); initStack(arrStack2); do { switch (ch) { case '1': { cout << endl; cout << "Введіть значення елемента:> "; cin >> stackE1; cout << endl; if (PUSH(arrStack1, stackE1)) cout << "Елемент успішно додано до стека " << endl; else cout << "Стек переповнений " << endl; } break; case '2': { cout << endl; cin >> stackE1; cout << endl; if (PUSH(arrStack2, stackE1)) cout << "Елемент успішно додано до стека " << endl; else cout << "Стек переповнений " << endl; } break; case '3': { if (isEmpty(arrStack1.PTS)) cout << "Стек пустий " << endl; else cout << " елементи 1 стеку \n"; showStack(arrStack1); cout << endl; break; } break; case '4': { if (isEmpty(arrStack2.PTS)) cout << "Стек пустий " << endl; else cout << " елементи 1 стеку \n"; showStack(arrStack2); cout << endl; break; } break; case '5': exit(0); break; } cout << "Для продовження натисніть " << endl; cin >> ch; } while (true); } |