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

Cтек в классе - C++

Восстановить пароль Регистрация
 
White Luna
 Аватар для White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
09.12.2010, 22:15     Cтек в классе #1
Задание: Описать класс реализующий стек произвольного размера для хранения целых чисел, добавление и извлечение одиночных элементов из стека реализовать при помощи перегрузки операций >, < . Добавление последовательности элементов перегрузить оператор сдвиг влево, Вывод на экран сдвиг в право

сама прога по стеку есть, писали на другой паре, у ми сложности с тем что бы переделать всю прогу в класс

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=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);
                    S[top]=NULL;
                    break;
                };
        printf (" \n Хотите повторить запрос нажмите 1, выйти нажмите 0 \n");
        scanf_s ("%d", &u);
       }
     while (u==1);
     system(" \n pause");
     exit(0);
         _getch;
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2010, 22:15     Cтек в классе
Посмотрите здесь:

Cтек!!! C++
У меня класс B в классе A, а в классе B рекурсивная функция переопределения оператора "()", как её вызвать, не создавая явно объект класса B? C++
CТЕК ! C++
C++ Известны оценки по физике каждого ученика двух классов.Определить средниюю оценку в каждом классе.Количество учащихся в каждом классе одинаковое!
Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
09.12.2010, 22:33     Cтек в классе #2
стек на односвязном списке
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
class MyStack {
private:
    int nodes; // количество узлов.
    struct node {
        node *next;
        int data;
        node(int, node *);
    };
    node *head;   // первый элемент в списке
public:
    MyStack();
    ~MyStack();
    bool empty();
    void push(int); // записать в стек
    void pop();      // вытолкнуть из стека
    int top();        // вернуть верхнее в стеке число
    void clear();    // удалить все элементы стека
    MyStack &operator<<(int);   // добавление в стек, тоже что и push();
    MyStack &operator>>(int&); // извлечение из стека
};
// пример реализации метода push()
void MyStack::push(int x)
{
    nodes++;
    head = new node(x, head);
}
MyStack::node::node(int d, node *n): data(d), node(n)
{}
White Luna
 Аватар для White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
09.12.2010, 22:37  [ТС]     Cтек в классе #3
поясни пж строчки 6, 7, 13,
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
09.12.2010, 22:41     Cтек в классе #4
int data; данные, сохраняемые в стеке.
node(int, node *); конструктор узла.
bool empty(); пустой или нет наш стек.
Yandex
Объявления
09.12.2010, 22:41     Cтек в классе
Ответ Создать тему
Опции темы

Текущее время: 20:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru