Форум программистов, компьютерный форум CyberForum.ru

Простейшая реализация стека и очереди - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка при попытке удаления указателя http://www.cyberforum.ru/cpp-beginners/thread1199126.html
Программа работает,но при попытке выйти из нее по условию,вылетает ошибка.Если закомментировать delete, то выходит без ошибок.Подскажите, как исправить.. #include "stdafx.h" #include <iostream> #include <conio.h> #include <string> using namespace std; struct Note {
C++ Метод Монте-Карло Помогите написать программу для вычисления определенного интеграла методом Монте-Карло. http://www.cyberforum.ru/cpp-beginners/thread1199118.html
Радиус вписанной окружности C++
Пользователь вводит 3 стороны треугольника. Найти радиус вписанной окружности. Можно простенькую функцию для вычисления? С граф. интерфейсом я сам справлюсь , спасибо!
C++ Описать класс, реализующий стек и работу с ним
Вот вроде понял и что такое стек, и что такое классы и как их реализовать в отдельности. Но как их объеденить в одну программу представления не имею. Пожалуйста, хотя бы подтолкните в нужном направлении, уже много подобных тем просмотрел, но мало что из них понял. Вот текст задания: Описать класс, реализующий стек и работу с ним. //1.) Класс должен содержать следующие сведения о наличии...
C++ реализовать класс, осуществляющий поиск и замену местами последнего и предпоследнего слова в строке http://www.cyberforum.ru/cpp-beginners/thread1199109.html
реализовать класс, осуществляющий поиск и замену местами последнего и предпоследнего слова в строке С++
C++ Подключить библиотеку Как подключить эту библиотеку (во вложении). В ней мат. функции. Исопльзую VS подробнее

Показать сообщение отдельно
FinalQ
0 / 0 / 0
Регистрация: 30.05.2012
Сообщений: 17
07.06.2014, 17:27  [ТС]     Простейшая реализация стека и очереди
Возникла некоторая проблемка:
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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
class Stack 
{
  private:
    int* arr;
    int* top;
    int size;
  public:
    Stack(int s = 10) 
    {
        this->size = s;
        arr = new int[s];
        top = arr;
    }
    Stack(const Stack& s) 
    {
        this->size = s.size;
        this->arr = new int[s.size];
        this->top = arr;
        int* p = s.arr;
        while (p < s.top) {*top++ = *p++;};
    }
 
bool isEmpty() 
    {
        if (top <= arr) 
        {return true;} else {return false;};
    }
 
bool isFull() 
    {
        if (top - arr >= size) {return true;} else {return false;}
    }
    
void push(int val) 
    {
        if(!isFull()) 
        {
            *top = val;
            top++;
        } else {cout << "Stek polnii!" << endl;};
    }
 
int pop() 
    {
        if(!isEmpty()) 
        {
            top--;
            return *top;
        } else {return 0;};
    }
 
void printStack() 
    {
        int* p = top -1;
        while (p >= arr) {cout << *p-- << ' ';};
        cout << endl;
    }
 
~Stack() 
    {
        delete[] arr;
    }
};
 
int main()
{
    int n,i,size;
    int x,y,xy;
    cout<<"1) Add elements\n";
    cout<<"2) See all elements\n";
    cout<<"3) Find element\n";
    cout<<"4) Delete element\n";
    cout<<"5) Exit\n";
    //Stack data(10);
    while (true)
    {
    int key;
    cin>>key;
    switch (key)
    {
        case 1: {cout<<"Skolko elementov vvodit?\n";
                cin>>n;
                Stack data(n);
                cout<<"Vvod nachat.\n";
                for (int i=0;i<n;i++)
                {
                cin>>x; 
                data.push(x);
                }
                cout<<"Vvod okonchen.\n";
                break;}
        case 2: {//Stack tmp(data);
                cout<<"Vivod nachat.\n";
                data.printStack();
                cout<<"Vivod okonchen.\n";
                break;}
/*        case 3: cout<<"Zadaite interval poiska:\n";
                cin>>x>>y;
                tmp=data;
                cout<<"Poisk nachat.\n";
                i=0;
                while (!tmp.empty()) 
                {
                if ((tmp.front().length()<x.length()) 
                or (tmp.front().length()>y.length())) 
                {cout<<tmp.front()<<"\n"; i++; xy=tmp.front(); break;};
                tmp.pop();
                }
                if (i==0) {cout<<"NET SOVPADENII!\n";};
                cout<<"Poisk okonchen.\n"; 
                break;
        case 4: cout<<"Naidenii element: "<<xy<<"\n";
                i=0;
                tmp=data;
                while (!tmp.empty()) 
                {
                if (xy==tmp.front()) {break;} else {i++;};
                tmp.pop();
                }
                tmp=data;
                size=tmp.size();
                for (int ii=0;ii<size;ii++)
                {
                if (ii!=i-1) {temp.push(tmp.front());};
                tmp.pop();
                }
                data=temp;
                cout<<"Ydalenie okoncheno.\n"; 
                break;*/
        case 5: exit(0); break;
    }
    }
    return 0;
}
в case 1 если не ставить скобки выдает ошибку "jump to case label [-fpermissive]", если ставить, то "'data' was not declared in this scope".
Без ошибок получается запустить программу есть вывести Stack data(n); за case, но данный способ не подходит... Подскажите пожалуйста, что можно с этим сделать?
 
Текущее время: 14:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru