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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
#1

Стек - C++

24.10.2010, 16:04. Просмотров 1440. Ответов 22
Метки нет (Все метки)

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

вот мой код
программа ошибок не выводит, т е как бы работает, но при вставке и удаление лагает
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
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "locale.h"
using namespace std;
 
int top;
    const int N=10;
int STACK_EMPTY1(int S[N])       // функция  проверяет стек на переполнение
{
    if (top=(N-1)) 
                return true;
    else return false;
};
 
void PUSH (int S[N],int  x)        //  функция заносит х в стек
{
    if (STACK_EMPTY1(S)) 
printf("error underflow");
    else top=top+1;
         S[top]=x;
};
 
int STACK_EMPTY(int S[N])   //функция проверяет пуст ли стек
{
if (top=0) 
          return true;
else return false;
};
 
char POP(int S[N])          // извлечение из стека 
{
if (STACK_EMPTY(S))
             printf("error underflow");
else top=top-1;
int f=S[top+1];
     return f;
};
 
int _tmain()
{
setlocale (LC_ALL, "Russian");
    int S[N];
    int y;
        int u=1;
        do 
        {
 
printf("Произведите выбор ваших дальнейших действий 0-добавить в стек 1-извлечь из стека\n");
char w;
scanf ("%s", &w);
switch (w)
{
case '0':
    printf("Вы выбрали действие - добавить в стек, теперь введите число, которое хотите добавить \n");
    scanf ("%d", &y);
    PUSH(S, y);
                        break;
case '1':
 
    printf("Вы выбрали действие - извлечь из стека, теперь введите число, которое хотите извлечь \n");
    scanf ("%d", &y);
    POP(S);
                        break;
};
printf ("Хотите повторить запрос нажмите 1, выйти нажмите 0 \n");
        scanf_s ("%d", &u);
        }
        while (u==1);
 
     system("pause");
     exit(0);
     _getch;
    return 0;
}
Добавлено через 8 минут
смысл проги как мне пояснили должен быть такой,т е она должна делать:
запрашивать что сделать добавить или извлечь из стека, постом перейти по тому что задал пользователь,
есле добавить то вывести введите число, если извлечь, то вывод числа
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2010, 16:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Стек (C++):

Используя стек, описать функцию проверяющую, является ли стек пустым - C++
Используя стек, описать функцию проверяющую, является ли стек пустым

Программа добавляет введенный массив 5*5 в стек и выводит полученный стек двумя столбцами - C++
Программа добавляет введенный массив 5*5 в стек и выводит полученный стек двумя столбцами #include <iostream> #include <stdlib.h> ...

Переменные в стеке. Где хранятся? Как обрабатываются? Есть ли программный стек или только стек процессора? - C++
Есть у меня пробелы в познаниях, хотел бы их устранить. 1. Что такое стек в самом языке С++ ? 2. В какой памяти он хранится и почему...

при работе рекурсивной функции заканчивается стек и программа соответственно; как сделать так, чтобы она писала "стек закончился"? - C++
Сабж g++ 4.5.0

Структура стек (: добавить элемент в стек, удалить элемент из стека, получить значение с вершины стека, размер стека...) - C++
Всем привет,ребят помогите пожалуйста с лабой,вообще без понятия про стеки:( Может кто то делал,или встречался с таким заданием: ...

Стек - C++
Здравствуйте,помогите найти понятную реализую кода стека с объяснениями.заранее благодарю Добавлено через 27 секунд Не STL

22
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
26.10.2010, 00:51  [ТС] #16
а мож пояснить что такое, (вернее что обозначают)
Stack size
Value
exit
push element // добавляет элемент в стек
pop element // извлекает элемент из стека
последние 2 вроде поняла, а вот с первыми 3 что то напряжно
понимаю, что туплю...
0
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,778
26.10.2010, 01:14 #17
Цитата Сообщение от White Luna Посмотреть сообщение
size
размер
Цитата Сообщение от White Luna Посмотреть сообщение
Value
значение
Цитата Сообщение от White Luna Посмотреть сообщение
exit
вообще-то выход, а где у меня там такое?
0
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
26.10.2010, 01:31  [ТС] #18
exit 3 строчка при выводе
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
26.10.2010, 01:33 #19
White Luna, Быстрый выход из программы. В плюсах лучше не использовать
0
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
26.10.2010, 01:40  [ТС] #20
угу

Lavroff,
0
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,778
26.10.2010, 01:45 #21
Цитата Сообщение от Lavroff Посмотреть сообщение
Быстрый выход из программы. В плюсах лучше не использовать
нормальный там выход из программы. exit - просто пункт меню, означающий выход, а завершается программа, когда menu() возвращает 0 и условие while ( i = menu() ) не выполняется.
1
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
26.10.2010, 02:07 #22
easybudda, ааа. это что-ли. понял)
0
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
27.10.2010, 19:09  [ТС] #23
ну и в итоге я доправила изначальную прогу. терь работает
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
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "locale.h"
using namespace std;
 
int top=0;
const int N=10;
int S[N];
int STACK_EMPTY1(int S[N])       // функция  проверяет стек на переполнение
{
        if (top>=(N-1)) 
                        return true;
        else return false;
};
 
void PUSH (int S[N],int &x)                //  функция заносит х в стек
{
        if (STACK_EMPTY1(S)) 
printf("error underflow \n");
 
        else top=top-1;
            S[++top]=x;
            
}; 
 
 
int STACK_EMPTY(int S[N])       //функция проверяет пуст ли стек
{
if (top==0) 
                  return true;
else return false;
}; 
 
 
int POP(int S[N])                  // извлечение из стека 
{
if (STACK_EMPTY(S))
             printf("error underflow \n");
else top=top-1;
     return S[top];                      
};
 
 
 
int _tmain()
{
setlocale (LC_ALL, "Russian");
int S[N]={NULL};
        int y;
        int u=1;
                do 
                {
printf("Произведите выбор ваших дальнейших действий 0-добавить в стек 1-извлечь из стека\n");
char w;
scanf ("%s", &w);
switch (w)
{
case '0':
        printf("Вы выбрали действие - добавить в стек, теперь введите число, которое хотите добавить \n");
        scanf ("%d", &y);
        PUSH(S, y);
        for (int i=0; i<(N-1); i++)
        {
        printf("%d ", S[i]);
        }
printf (" \n %d", top);
top++;
                        break;
case '1':
        printf("Вы выбрали действие - извлечь из стека\n");
        
        int a=POP(S);
  printf("%d \n", a);
        for (int i=0; i<(N-1); i++)
        {
        printf("%d  ", S[i]);
        }
printf (" \n %d", top);
 
    
                        break;
};
printf (" \n Хотите повторить запрос нажмите 1, выйти нажмите 0 \n");
                scanf_s ("%d", &u);
                }
                while (u==1);
     system(" \n pause");
     exit(0);
         _getch;
        return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2010, 19:09
Привет! Вот еще темы с ответами:

Стек - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; class Stack_mass { public: int *data; int max_count,...

Стек - C++
Уважаемые теоретики по С++ подскажите, пожалуйста, как граммотно называются в Стеке самое нижнее и самое верхнее значения. Заранее спасибо.

Стек! - C++
Реализуйте структуру данных &quot;стек&quot;. Напишите программу, содержащую описание стека и моделирующую работу стека, реализовав все указанные...

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


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

Или воспользуйтесь поиском по форуму:
23
Yandex
Объявления
27.10.2010, 19:09
Ответ Создать тему
Опции темы

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