Главная страница
Навигация по странице:

  • Практична (Лабораторна) робота № 7 на тему: «Робота зі стеками та чергами»

  • Мета: набуття практичних вмінь та навичок по роботі з стеками та чергами. Завдання 1

  • АіМО ЛР. Звіт ЛР№2 АіМО Ярмолюк 3ОК1. Робота зі стеками та чергами


    Скачать 42.72 Kb.
    НазваниеРобота зі стеками та чергами
    АнкорАіМО ЛР
    Дата24.11.2021
    Размер42.72 Kb.
    Формат файлаdocx
    Имя файлаЗвіт ЛР№2 АіМО Ярмолюк 3ОК1.docx
    ТипДокументы
    #281362

    МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ВІННИЦЬКИЙ ТЕХНІЧНИЙ КОЛЕДЖ




    Відділення комп’ютерне

    Циклова комісія інформатики та інформаційних комп’ютерних технологій


    «АЛГОРИТМИ І МЕТОДИ ОБЧИСЛЕНЬ» ЗВІТ


    Практична (Лабораторна) робота № 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);

    }



    написать администратору сайта