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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Prigor
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
#1

Написал прогу по стеку, но при выводе содержимого - выводит только последний добавленный - C++

23.11.2011, 23:26. Просмотров 447. Ответов 8
Метки нет (Все метки)

Вот собственно сам код, подскажите если что не так. Заранее спасибо!

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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#include <iostream>
#include <stack>
using namespace std;
 
 
class Node 
{
public:
    int number;
    Node* last;
};
 
Node* ptrLast = NULL;
Node* top = NULL;
 
void push ()  //добавление в стек
{
            system("cls");
            int numb = -1;          
            cout<<"Введите Число: "; cin>>numb;
            Node* ptr = new Node;
            ptr->number = numb;         
            if (top == NULL)
            {
                ptr->last = NULL;
                top = ptr;
                ptrLast = ptr;
                system("cls");
            //  continue;
            }
            top = ptr;
            ptr->last = ptrLast;
            ptrLast = ptr;
            system("cls");
            //continue;
}
 
void pop () //удаление из стека
{
            system("cls");
            Node* ptrDelete = NULL;
            if (top == NULL)
            {
                cout<<"\t!!! СТЕК ПУСТ !!!\n\n";
                system("pause");
                system("cls");
                //continue;
            }   
            else
            {
            ptrDelete = top;
            if (ptrDelete->last == NULL)
            {
                top = NULL;
                delete ptrDelete;
                system("cls");
                //continue;
            }
            top = ptrDelete->last;
            ptrLast = top;
            delete ptrDelete;
            //continue;
            }
}
 
void versh () //просмотр вершины
{
            system("cls");
            if (top == NULL)
            {
                cout<<"\t!!! СТЕК ПУСТ !!!\n\n";
                system("pause");
                system("cls");
                //continue;
            }
            else
            {
            cout<<"Вершина Стека: ";
            cout<<top->number<<"\n\n";
            system("pause");
            system("cls");
            //continue;
            }
}
 
void soderzh () //содержимое стека
{
            system("CLS");
            Node* ptr = NULL;
            if (top == NULL)
            {
                cout<<"\t!!! СТЕК ПУСТ !!!\n\n";
                system("PAUSE");
                system("CLS");
                //continue;
            }
            cout<<"* * * * * СОДЕРЖИМОЕ СТЕКА * * * * *\n\n";
            ptr = top;
            while (1)
            {
                cout<<ptr->number<<endl;
                if (ptr->last == NULL)
                {
                    system("PAUSE");
                    system("CLS");
                    break;
                }
                else
                {
                ptr = ptr->last;
                break;
                }
            }
}
 
 
int main ()
{
    setlocale (0, "");
    int vyb;
    while (1)
    {
    cout<<"\n1. Добавить в Стек\n2. Вытолкнуть Из Стека\n3. Вершина Стека\n4. Содержимое Стека\n0. Выход\n\n"; cin>>vyb;
    cout<<"Ваш выбор: "<<vyb;
 
    switch (vyb)
    {
    case 0:
        {
        return 0;
        }break;
    case 1:
        {
            push ();
            soderzh ();
            system ("pause");
            system("cls");
        }break;
    case 2:
        {
            pop ();
            soderzh ();
            system ("pause");
            system("cls");
        }break;
    case 3:
        {
            versh ();
            system ("pause");
            system("cls");
        }break;
    case 4:
        {
 
            soderzh ();
            system ("pause");
            //system("cls");
        }break;
 
    }
    }
 
 
    system ("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2011, 23:26     Написал прогу по стеку, но при выводе содержимого - выводит только последний добавленный
Посмотрите здесь:

Ошибка при выводе 1-го элемента массива, но правильно выводит последний - C++
Помогите пожалуйста найти ошибку (почему не выводит переменную а?): #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; ...

Бинарное дерево выводит только последний узел - C++
дерево выводит только последний узел а не все #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; struct Node //звено {...

При выводе массива, выводит мусор - C++
Програмка генератор паролей! #include&lt;iostream&gt; #include&lt;time.h&gt; #include&lt;conio.h&gt; using namespace std; void...

При добавлении студента, сбивается вся структура, и при выводе всего списка студентов, выводит какой то мусор - C++
Суть действий: При добавлении студента, сбивается вся структура, и при выводе всего списка студентов, выводит какой то мусор. Раньше я...

При выводе минимального элемента последовательности программа выводит слишком большое число - C++
При выводе минимального элемента программа выводит слишком большое число. #include &lt;iostream&gt; using namespace std; int main() { ...

Написал прогу она не работает!!!!! - C++
#include &lt;windows.h&gt; #include &lt;cstdlib&gt; #include &lt;iostream&gt; int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
24.11.2011, 09:04     Написал прогу по стеку, но при выводе содержимого - выводит только последний добавленный #2
Prigor, в этом разделе про стэк уйма тем, может быть стоит воспользоваться поиском.
Prigor
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
24.11.2011, 13:49  [ТС]     Написал прогу по стеку, но при выводе содержимого - выводит только последний добавленный #3
понимаю, но думал что люди помогут здесь
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.11.2011, 18:04     Написал прогу по стеку, но при выводе содержимого - выводит только последний добавленный #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
int pop (node_t ** stack, type ** buf)
{
        node_t * n = *stack;
        if ( ! n )
           return -1;
        
        *buf = (type *) malloc (sizeof (type) );
        **buf = n->el; 
        *stack = n->next;
        free(n);
        
        return 0;
}
Prigor
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
29.11.2011, 21:27  [ТС]     Написал прогу по стеку, но при выводе содержимого - выводит только последний добавленный #5
посмотрите по моей проге что не так. Потому что , когда реализовывал через switch() , то вывод работал
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.11.2011, 21:30     Написал прогу по стеку, но при выводе содержимого - выводит только последний добавленный #6
Prigor, а что смотреть, как выйти из вашего бесконечного цикла
Prigor
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
29.11.2011, 21:33  [ТС]     Написал прогу по стеку, но при выводе содержимого - выводит только последний добавленный #7
да даже если убрать его, он выводит последний элемент который добавил в стек, а реализации switch'ом всё идеально, выводил все эл-ты
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.11.2011, 21:38     Написал прогу по стеку, но при выводе содержимого - выводит только последний добавленный #8
Prigor, цикл создать не пробовали?
C
1
2
3
4
5
6
7
8
9
while (stack)
    {
        pop (&stack,&c);
        
        printf ("\n%d", *c);
        free (c);
        
 
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2011, 21:42     Написал прогу по стеку, но при выводе содержимого - выводит только последний добавленный
Еще ссылки по теме:

"Stack around the variable 'a' was corrupted" при выводе содержимого файла на экран - C++
Доброго времени суток, компиляции программы вылетает такая ошибка Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted. ...

написал прогу но в чем косяк она не работает - C++
задание и мое решение во вложениях скажите где не правильно а то задолбался уже 2 день на ней сижу Прикрепляйте изображения к...

Написал прогу, не знаю как объяснить правильно!!! - C++
Как правильно описать задачу преподу? Условие: 5 работников, базовая з/п 5000 за 1 ед 2000, за 2 1800, более 3х 1500. задается любое...

Написал прогу, не знаю как объяснить правильно!!! - C++
Как правильно описать задачу преподу? Условие: 5 работников, базовая з/п 5000 за 1 ед 2000, за 2 1800, более 3х 1500. задается любое...


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

Или воспользуйтесь поиском по форуму:
Prigor
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 9
29.11.2011, 21:42  [ТС]     Написал прогу по стеку, но при выводе содержимого - выводит только последний добавленный #9
смысл в том, что я реализую на основе списков односвязных
Yandex
Объявления
29.11.2011, 21:42     Написал прогу по стеку, но при выводе содержимого - выводит только последний добавленный
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru