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

Стек, не во всех случаях работает удаление - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нахождение чисел в матрице. Очень сложно http://www.cyberforum.ru/cpp-beginners/thread212819.html
#include "stdafx.h" #include "iostream" #include "conio.h" #include "math.h" #include "time.h" using namespace std; #define nmax 100 int _tmain(int argc, _TCHAR* argv) {
C++ Си, работа с файлами помогите пожалуйста написать прогамму на Си, вот само задание: подготовьте текстовый файл, который состоит из строк, содержащих по два целых числа. Создайте программу, которая читает эти пары... http://www.cyberforum.ru/cpp-beginners/thread212802.html
C++ перевод чисел(с++)
Здравствуйте!!! Наткнулся на интересну задачу, я ее решил, но ни как не пойму почему выходит не правильно!!! Суть задачи такая, вводим число в десятиричной системе и переводим его в бинарный код,...
нужен компилятор C под Windows 7 C++
нужен компилятор C, который бы работал под 64-битной Windows 7. Дайте ссылку, пожалуйста
C++ Хочу получить зачет! http://www.cyberforum.ru/cpp-beginners/thread212787.html
Помогите решить задачу на СИ++ Программа. Дан файл и две строки. Все вхождения первой строки в файл (в том числе и в качестве подстроки) заменить второй строкой. Имя файла и строки задаются в...
C++ верное/неверное расположение скобок delete подробнее

Показать сообщение отдельно
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402

Стек, не во всех случаях работает удаление - C++

16.12.2010, 23:56. Просмотров 657. Ответов 3
Метки (Все метки)

Описать класс Lifo, реализовать стек произвольного размера для хранения целых чисел, добавление и извлечение одиночного элемента из стека, реализовать при помощи перегрузки операций >, <. Добавлять последовательность элементов, перегрузив оператор >>. Вывод на экран - <<.

Проблема в реализации, иногда удаление норм работает, а иногда при удаление прога вылетает
Пример когда вылетает
Это реализация
сейчас в стеке один элемент, равный 0
Выберете операцию:
1-загрузить в стек один элемент;
2-загрузить в стек несколько элементов;
3-вывести последний загруженный эл-т и удалить его;
4-вывести весь стек
1
введите элемент
2


Выберете операцию:
1-загрузить в стек один элемент;
2-загрузить в стек несколько элементов;
3-вывести последний загруженный эл-т и удалить его;
4-вывести весь стек
2
сколько еще элементов будет загружено в стек?
4
Введите1элемент
4
Введите2элемент
5
Введите3элемент
6
Введите4элемент
7


Выберете операцию:
1-загрузить в стек один элемент;
2-загрузить в стек несколько элементов;
3-вывести последний загруженный эл-т и удалить его;
4-вывести весь стек
4
Весь стек:
7 6 5 4 2 0

Выберете операцию:
1-загрузить в стек один элемент;
2-загрузить в стек несколько элементов;
3-вывести последний загруженный эл-т и удалить его;
4-вывести весь стек
3


вводим 3 и прога вылетает, почему так и как это исправить?

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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std; 
class Lifo
{
 private:
    struct element
    { 
     int value; // ячейка для хранения инфоормации
     element *next; // указатель на следующий элемент стека
    };
  element *last; // указатель на последний элемент стека
 public:
Lifo(void) //  Конструктор без параметра
    {
     last=new element;
     last->value=0;
     last->next=NULL; 
    }; 
Lifo (int x) // Конструктор с параметром
    {
     last=new element;
     last->value=x;
     last->next=NULL;
    };
void operator>(int val) // операция >
    {
     element *pv=new element;
     pv->value=val;
     pv->next=last;
     last=pv; 
    };
void operator>>(int n) // добавление эл-тов в стек 
    {
     int val; 
     for(int i=0;i<n;i++)
        {
     cout<<"Введите"<<i+1<<"элемент"<<endl;
     cin>>val;
     element *pv=new element;
     pv->value=val; 
     pv->next=last;
     last=pv;
        };
    };
void operator< (int a) //операция <
    {
     cout<< "Последне введенное число: "  << last->value <<endl; 
     element *pv=last;
     last=last->next; 
     delete pv; 
    };
void operator<<(int a)//вывод на экран
    {
     cout<<"Весь стек:"<<endl; 
     while(last!=NULL)
        {
         cout<<last->value<<" " ;
         element *pv=last;
         last=last->next; 
         delete pv; 
        };
    }; 
};
 
int  _tmain()
{
    setlocale(LC_ALL,"Russian") ;
 Lifo A(0);
 char znak;
 cout<<"сейчас в стеке один элемент, равный 0"<<endl;
for(int i=0;i<5;i++)
 {
    cout<<"Выберете операцию:\n1-загрузить в стек один элемент;\n2-загрузить в стек несколько элементов;\n3-вывести последний загруженный эл-т и удалить его;\n4-вывести весь стек"<<endl;
    cin>>znak;
    int n;
     switch (znak)
      { 
        case '1':
                 int q;
                 cout<<"введите элемент"<<endl;
                 cin>>q;
                 A. operator>(q);
                 break; 
        case '2':
                 cout<<"сколько еще элементов будет загружено в стек?"<<endl;
                 cin>>n;
                 A. operator >>(n);
                 break; 
        case '3':
                 A.operator <(0);
                 break; 
        case '4':
                 A.operator <<(0);
                 break;
      }
    cout<<"\n"<<endl; 
} 
_getch();
return 0; 
}
Добавлено через 2 часа 19 минут
никто не знает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru