Разработка шаблона класса, реализующего структуру данных «стек»

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Содержание работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное агентство по образованию 

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ

 ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Учебный Центр Информационных Технологий «Информатика»

Лабораторная работа №4

по дисциплине «Объектно-ориентированное программирование»

Направление подготовки: 230105 - «Программное обеспечение вычислительной техники и автоматизированных систем»

Выполнил слушатель:

Вариант: 9

Дата сдачи: __/__/____

Преподаватель:

Новосибирск, 2016г.


Лабораторная работа № 4. Разработка шаблона.

1.  Цель работы: разработать шаблон класса, реализующий структуру данных «стек».

2.  Вариант № 9.  Тип контейнера - стек. Размер буфера – параметр конструктора.

3.  Описание программной реализации.

Проект скомпилирован в среде Microsoft VS и содержит четыре файла: интерфейс шаблонного класса Stack.h, интерфейс класса комплексных чисел Complex.h, реализация его методов Complex.cpp, и файл main.cpp.

Используемые функции:

—  int menu() — функция программы, содержащая интерфейс и меню пользователя, выполняет вызовы других функций и методов, в соответствии с выбором пользователя.

—  voidgotoxy(intx, inty) —функция, осуществляющая управление курсором. Помещает курсор в координаты, указанные в параметрах.

Методы шаблонного класса Stack:

—  Stack(int count = 0) — конструктор по умолчанию.

—  ~Stack() — деструктор.

—  int getSize() — возвращает значение размера стека.

—  voidpush() — метод внесения объекта в стек.

—  Typepop() — метод получения объекта из стека. 

—  TypegetElement(int) — метод вывода любого объекта (для визуализации стека).

—  intgetTop() — метод получения вершины стека.

4.  Вывод

В ходе выполнения лабораторной работы я освоил разработку шаблона класса, реализующего структуру данных «стек».

5.  Пример работы программы.

При запуске пользователю предлагается указать размер стека.

Затем на экране отображаются три области:

- содержимое стека – объекты, находящиеся в стеке, отображаются в порядке их добавления методом push;

- значение, полученное вызовом из стека с помощью метода pop;

- область меню.

Пользователь может приступить к заполнению стека, выбрав пункт «2».

 Программа сообщает пользователю о заполнении стека.

Вывод данных из стека осуществляется нажатием клавиши «1».

Программа также сообщает о невозможности вывода из стека.

При выходе из программы происходит удаление всех элементов динамического массива и освобождается память.

6.  Приложение. Текст программы.

Stack.h:

#pragma once

using namespace std;

template  <typename Type>

class Stack

{

int size;                                       // размер массива

int top;                                        // вершина стека

Type *array = new Type[size];                   // стек в виде массива

public:

Stack(int count = 0);                           // параметр конструктора - это размер стека

~Stack();

int getSize();                                  //

void push();

Type pop();

Type getElement(int);

int getTop();

};

template<typename Type>

Stack<Type>::Stack(int count = 0): size(count)      // конструктор стека

{

top = 0;

}

template<typename Type>

Stack<Type>::~Stack()                               // деструктор

{

delete[] array;

cout<<"Стек удалён (количество объектов: "<<top<<")"<<endl;

_getch();

}

template<typename Type>

int Stack<Type>::getSize()                          // размер стека

{

return size;

}

template<typename Type>

void Stack<Type>::push()                 // положить в стек

{

if (top>=size)

{

system("cls");

gotoxy(10, 20);

cout<<"Переполнение стека!"<<endl;

return;

}

Type object;

cin>>object;

array[top++] = object;

}

template<typename Type>

Type Stack<Type>::pop()                             // взять из стека

{

return array[--top];

}

template<typename Type>

Type Stack<Type>::getElement(int num)               // взятие нужного элемента

{  

return array[num];

}

template<typename Type>

int Stack<Type>::getTop()                           // получить вершину стека

{

return top;

}

Complex.h:

#pragma once

#include <iostream>

#include <math.h>

using namespace std;

class Complex

{

static double const pi;

static int counter;

double real, image;

public:

Complex();

Complex(double, double);

Complex(const Complex &);

~Complex();

double mod();

double arg();

void show();

static int getCounter();

static void del(Complex* &);

void edit();

friend ostream & operator << (ostream &out, Complex &obj);

friend istream & operator >> (istream &in, Complex &obj);

Похожие материалы

Информация о работе

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.