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

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

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

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

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

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

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

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

Лабораторная работа №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);

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

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