С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Удаление элементов из стека - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести слова строки, которые представляют собой числа http://www.cyberforum.ru/cpp-beginners/thread1153158.html
Вводим строку.Нужно вывести слова строки, которые представляют собой числа. Помогите сделать, а то я даже не нашел логики в задании. :umbrage:
C++ Застрял с вводом с файла Всем здравствуйте. Вот код: #include <iostream> #include <fstream> #include <string> //static const int SIZEN = 64; //void end_of_input(std::ifstream&, char); http://www.cyberforum.ru/cpp-beginners/thread1153151.html
C++ Что означает косая черта в имени библиотеки?
Встретила в jaula такой инклуд:"jaula/jaula_bad_data_type.h", в связи с чем возник вопрос: что значит эта косая? Это значит, что jaula_bad_data_type.h должна быть в папке jaula? Компилятор его не...
Используя множества, составить программу, которая находит: C++
Используя множества А, В, С, состоящие из больших латинских букв, заполнены с клавиатуры, составить программу, которая находит: (A ∩ B) \ C. Заранее спасибо.
C++ Шаблоны классов http://www.cyberforum.ru/cpp-beginners/thread1153106.html
Добрый день. Изучаю шаблоны классов в С++ в среде MVC 2006. Проблема в следующем: я создал шаблон класса стек, с размером этого самого стека 10 позиций, но не могу теперь сделать чтобы размер можно...
C++ Удалить из строки первое вхождение буквосочетание 'not' Заданная строка S. Превратить S следующим образом: 1) Удалить из S первое вхождение буквосочетание 'not' ; 2) После первого буквосочетание 'so' вставить 'on' ; 3) В строку Х скопировать 4 символа... подробнее

Показать сообщение отдельно
Erke
0 / 0 / 0
Регистрация: 21.04.2014
Сообщений: 6

Удаление элементов из стека - C++

21.04.2014, 15:27. Просмотров 2118. Ответов 1
Метки (Все метки)

Здравствуйте. Посмотрите, пожалуйста мой код. Это не совсем обычная реализация стэка. И может быть не совсем логичная, но она работает, за исключением функции удаления стэка. Задание: Определить класс «Стек» – Stack. Элементы стека хранятся в массиве. Если массив имеет фиксированную размерность, то предусмотреть контроль выхода за пределы массива. Если память выделяется динамически и ее не хватает, то увеличить размер выделенной
памяти. Включение элементов в стек и их извлечение реализовать как в виде методов, так и с помощью перегруженных операций. Создать массив объектов класса Stack. Передавать объекты в функцию, которая удаляет из стека первый (сверху), третий, пятый и т. д. элементы. Для того чтобы в одной программе реализовать и методы и перегруженные функции необходима функция удаления стэка.

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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include <iostream.h>
#include <fstream.h>
int *m;
class stack
{
private:
    int size; 
    int *a;
public:
    stack();
    void del();
    void vvod(int l);
    void vyvod();
    void pop();
    void push();
    //int& operator[](int i);
    int Getize()
    {
    return size;
    };
    friend istream& operator >> (istream&, stack&);
    friend ostream& operator << (ostream& , stack&);
    
};
 
void stack::del()
{
    delete &a;
};
 
stack::stack()
{
    a=new int [256];
    size=0;
}
 
void stack::vvod(int l)
{
    if (size>256)
    {
        cout<<"Perepolnenie!!!"<<endl;
    }
    else 
    {
        a[size]=l;
        size++;
    }
};
 
int& stack::operator[](int i)
{
    if(i<0 || i>=size)
    { 
        cout <<"(i="<<i<<")"<<endl; 
    } 
return a[i];
}
 
void stack::vyvod()
{
    int i;
    for (i=size-1;i>=0;i--)
    {
        cout<<a[i]<<" ";
    }
    cout<<endl;
};
 
void stack::pop()
{
    int i;
    m=new int [size];
    for(i=0;i<size;i++)
    {
        m[i]=a[i];
    }
    
};
 
void stack::push()
{
    int i,j=1;
    for(i=0;i<size/2;i++)
    {
        a[i]=m[j];
        j=j+2;      
    }
    size=size/2;
}
 
 
istream& operator>>(istream& in, stack &t)
{
    int z, n;
    cin >> n ;
    for (int i=0;i<n;i++)
    {
        in >> z;
        t.vvod(z);
    }
    return in; 
}
 
ostream& operator << (ostream& out, stack &t)
{
    for (int i=t.Getize()-1;i>=0;i--)
    {
        out<<t[i];
    }
    return out;
 
}
 
int main()
{
    int i,j,d,p;
    stack a[2];
    cout<<"Vvedite kol-vo elementov: ";
    cin>>p;
    for (i=0;i<2;i++)
    {
        cout<<"Vvedite elementy: "<<endl;
        for (j=0;j<p;j++)
        {
            cin>>d;
            a[i].vvod(d);
        }
        cout<<endl;
    }
    cout<<"Udalim nechetnye elementy!"<<endl;
    for (i=0;i<2;i++)
    {
        a[i].pop();
        a[i].push();
        a[i].vyvod();
        a[i].del();
    }
 
    for (i=0;i<2;i++)
    {
        cout<<"Vvedite elementy snova"<<endl;
        cin>>a[i];
    }
    
    for (i=0;i<2;i++)
    {
        cout<<"Stack "<<i<<endl;
        cout<<a[i];
    }
    
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.