24 / 8 / 17
Регистрация: 22.12.2015
Сообщений: 2,099
1

Разработать шаблон класса для хранения данных (контейнер)

14.11.2016, 16:50. Показов 4302. Ответов 4
Метки нет (Все метки)

Я не понял как описать шаблон класса для хранения данных (контейнер). Данные должны хранится, например, в виде массива. Шаблон должен включать в себя функции добавления данных, удаления данных, вывода данных на консоль ( info() ). Реализовать итератор для перебора данных контейнера так, чтобы он перебирал элементы
в следующем порядке: сначала первый добавленный в массив элемент, затем последний, затем второй добавленный в массив элемент, затем предпоследний и т.д. При достижении последнего элемента итератор должен «переключаться» снова на первый элемент, то есть быть «кольцевым». Продемонстрировать работу шаблона на объектах как встроенного типа, так и собственного класса. Для этого создать собственный класс и перегрузить в нем нужные функции-операции.

Добавлено через 1 час 49 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
#include <iomanip>
 
template <typename T>
class Stack
{
private:
    T *stackPtr; // указатель на стек
    int size; // размер стека
    T top; // вершина стека
public:
    Stack(int = 10);// по умолчанию размер стека равен 10 элементам
    ~Stack(); // деструктор
    bool push(const T  ); // поместить элемент в стек
    bool pop(); // удалить из стека элемент
    void printStack();
};
 
int main()
{
    Stack <int> myStack(5);
 
    // заполняем стек
    cout << "Заталкиваем элементы в стек: ";
    int ct = 0;
    while (ct++ != 5)
    {
        int temp;
        cin >> temp;
        myStack.push(temp);
    }
 
    myStack.printStack(); // вывод стека на экран
 
    cout << "\nУдаляем два элемента из стека:\n";
 
    myStack.pop(); // удаляем элемент из стека
    myStack.pop(); // удаляем элемент из стека
    myStack.printStack(); // вывод стека на экран
 
    return 0;
}
 
// конструктор
template <typename T>
Stack<T>::Stack(int s)
{
    size = s > 0 ? s: 10;   // инициализировать размер стека
    stackPtr = new T[size]; // выделить память под стек
    top = -1; // значение -1 говорит о том, что стек пуст
}
 
// деструктор
template <typename T>
Stack<T>::~Stack()
{
    delete [] stackPtr; // удаляем стек
}
 
// элемент функция класса  Stack для помещения элемента в стек
// возвращаемое значение - true, операция успешно завершена
//                                    false, элемент в стек не добавлен
template <typename T>
bool Stack<T>::push(const T value)
{
    if (top == size - 1)
        return false; // стек полон
 
    top++;
    stackPtr[top] = value; // помещаем элемент в стек
 
    return true; // успешное выполнение операции
}
 
// элемент функция класса  Stack для удаления элемента из стек
// возвращаемое значение - true, операция успешно завершена
//                                    false, стек пуст
template <typename T>
bool Stack<T>::pop()
{
    if (top == - 1)
        return false; // стек пуст
 
    stackPtr[top] = 0; // удаляем элемент из стека
    top--;
 
    return true; // успешное выполнение операции
}
 
// вывод стека на экран
template <typename T>
void Stack<T>::printStack()
{
    for (int ix = size -1; ix >= 0; ix--)
        cout << "|" << setw(4) << stackPtr[ix] << endl;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.11.2016, 16:50
Ответы с готовыми решениями:

Разработать шаблон класса для вывода вектора данных в поток
Разработать шаблон соответствующего класса, где поля могут иметь различные типы данных....

Подскажите контейнер для хранения данных
Доброе время суток, имеем файл следующего содержания: # | Name | Type | Target 1 test txt ...

Реализовать шаблон класса для хранения динамического списка
Нужно реализовать: 1.Операции вставки элемента в начало списка 2.Операцию удаления первого...

Разработать шаблон класса для реализации односвязного списка
Помогите пожалуйста разработать шаблон класса для реализации односвязного списка.

4
24 / 8 / 17
Регистрация: 22.12.2015
Сообщений: 2,099
14.11.2016, 16:56  [ТС] 2
Да это не то что мне нужно,хотя похоже
Разработать шаблон класса для хранения данных (контейнер)
0
24 / 8 / 17
Регистрация: 22.12.2015
Сообщений: 2,099
14.11.2016, 17:45  [ТС] 3
Вот ближе к задаче нашел код на этом форуме.Пишет нецивилизованная переменная temp
Разработать шаблон класса для хранения данных (контейнер)


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
 
#include<iostream>
#include<time.h>
using namespace std;
 
template <typename T>
struct Elem
{
    T *mass;
    int razmer;
    Elem * next, *prev;
};
 
template <typename T>
class Array
{
    Elem<T> * Head, *Hvost;
    int Count;
    int size;
public:
    Array();
    Array(int);
    Array(const Array&);
    ~Array();
    void Getsize();
    void SetSize(int size, int grow);
    void GetUpperBound();
    bool IsEmpty();
    void FreeExtra();
    void RemoveAll();
    void GetAt(int pos);
    void SetAt(int pos);
    Array &operator[](const Array&);
    Array& operator=(const Array&);
    void Add();
    void Append(const Array&);
    void GetData();
    void InsertAt(int pos);
    void RemoveAt(int pos);
    void Show(const Array&);
};
template <typename T>
Array<T>::Array()
{
    Count = 0;
    Head = Hvost = NULL;
    size = 0;
}
template <typename T>
Array<T>::Array(int n)
{
    Elem<T> *temp;
    temp->mass = new int[n];
    temp->razmer = n;
    for (int i = 0; i<n; i++)
        temp->mass[i] = rand() % 20;
    Count = 0;
    Head = Hvost = NULL;
    size = 0;
}
template <typename T>
Array<T>::Array(const Array &N)
{
    Elem<T> *temp = N.Head;
    while (temp != 0){
        AddHvost(temp->mass);
        temp = temp->next;
 
    }
}
template <typename T>
void Array<T>::Show(const Array&N)
{
    Elem<T> *temp = N.Head;
    while (temp != 0){
        for (int i = 0; i<temp->razmer; i++)
            cout << temp->mass << " ";
        temp = temp->next;
 
    }
}
int main()
{
    setlocale(LC_ALL, "rus");
    int num; // размер массива
    cout << "Ведите количество элементов  стека: " << endl;
    cin >> num; // получение от пользователя размера массива
 
    Array <int> myArray(num);
    myArray.Add();
    myArray.Append(num);
    myArray.FreeExtra();
    myArray.GetAt(0);
    myArray.GetData();
    myArray.Getsize();
    myArray.GetUpperBound();
    myArray.InsertAt(2);
    myArray.IsEmpty();
    myArray.Show(num);
    system("pause");
    return 0;
}
0
Don't worry, be happy
17769 / 10534 / 2034
Регистрация: 27.09.2012
Сообщений: 26,505
Записей в блоге: 1
14.11.2016, 17:49 4

Не по теме:

Цитата Сообщение от scherbakovss201 Посмотреть сообщение
Пишет нецивилизованная переменная temp
Она за демократию хоть? :D



Добавлено через 2 минуты
C++
1
2
    Elem<T> *temp;//в переменной мусор
    temp->mass = new int[n];//а мы уже гоняем во всю.
1
24 / 8 / 17
Регистрация: 22.12.2015
Сообщений: 2,099
14.11.2016, 17:54  [ТС] 5
Цитата Сообщение от Croessmah Посмотреть сообщение
Elem<T> *temp;//в переменной мусор
* * temp->mass = new int[n];//а мы уже го
Как правильно?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2016, 17:54
Помогаю со студенческими работами здесь

Разработать шаблон класса для работы со стеком реализованным в виде связного списка
Разработать шаблон класса для работы со стеком реализованным в виде связного списка. Тип эле-ментов...

Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком
Решить задачу с использованием STL. Разработать шаблон класса для работы с односвязным...

Двунаправленный ассоциативный контейнер для хранения структур
12. Двунаправленный ассоциативный контейнер. Цель: разработать программу, реализующую...

Шаблон класса для записи данных в двоичный файл
Доброго времени суток! Нужно организовать шаблон для записи данных в двоичный файл. Но мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru