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

Видимость констант из глобальной области внутри класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывод таблицы на экран http://www.cyberforum.ru/cpp-beginners/thread84452.html
Здравствуйте, помогите пожалуйста,очень срочно нужно сделать программку которая выводи на экран табличку как показано на изображение...заранее спасибо...
C++ Генерация случайных чисел Как в С сгенирировать последовательность случайных чисел от x до y.Например от 1 до 100. http://www.cyberforum.ru/cpp-beginners/thread84424.html
C++ Вопросы
Здравствуйте! 1. Как сделать так, чтобы программа (функция (strlen() ) не считала пробелы? 2. Можно ли упростить (сократить) "cin.get(); cin.get();" ?
Проверить, является ли заданная строка зашифрованной по алгоритму, приведенному в след варианте. C++
Здравствуйте,мне нужна ваша помощь=) У меня возникла проблема,я новичек в написании программ и не могу написать ни чего...а у меня скоро экзамен,так что как не крутись,а это задание надо сдать,я очень сильно надеюсь на вас господа программисты!!! Задание Проверить, является ли заданная строка зашифрованной по алгоритму, приведенному ниже варианте. Если да - выдать расшифрованную строку,...
C++ Время выполнения процедуры в С++ 3.1 http://www.cyberforum.ru/cpp-beginners/thread84392.html
Столкнулся с проблемой. Нужно подсчитать за сколько тактов процессора(времени) выполняется код процедуры. Стандартные функции С++ выдают значение 0 , а из исходников на ассемблере из инета ничего не компилируется. Может кто знает в чем проблема?
C++ одномерные массивы и указатели помогите пожалуйста написать программу: в одномерном массиве, состоящем из n элементов, вычислить: 1) номер минимального по модулю элемента массива; 2) сумму модулей элементов массива, расположенных после первого отрицательного элемента. сжать массив, удалив из него все элементы, величина которых находится в интервале . освободившиеся в конце массива элементы заполнить нулями. спасибо! подробнее

Показать сообщение отдельно
outoftime
║XLR8║
509 / 431 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
11.01.2010, 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
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
#include <iostream>
 
#define FOR(i,a,b) for (int i(a), _n(b); i < _n; ++i)
 
//stack struct------------------------------------------------------------------
 
struct node;
struct node
{
public:
    int* val;
    node* prev;
};
typedef struct node node;
 
//const initialize--------------------------------------------------------------
 
const int heap_size = 60*1000,
          block_size = 19;
          
//memory class------------------------------------------------------------------
 
class Memory
{
public:
    Memory();
    ~Memory();
    int* find();
    void free(int *);
private:
    int* bit_set,
       * heap;
};
 
//stack class-------------------------------------------------------------------
 
class stack
{
public:
    stack();
    ~stack();
    void push(int &);
    int pop();
private:
    node* head;
    int top;
};
 
//main--------------------------------------------------------------------------
 
int main()
{
    int n, d;
    char* s = new char[5];
    scanf("%d", &n);
    stack* a = new stack[1000];
    while(n--)
    {
        scanf("%s%d", s, &d);
        if (s[1] == 'U')
        {
            int dd;
            scanf("%d", &dd);
            a[d-1].push(dd);
        }
        else printf("%d", a[d-1].pop());
    }
    return 0;
}
 
//class Memory------------------------------------------------------------------
 
Memory::Memory()
{
    bit_set = (int *) calloc (heap_size, sizeof(int));
    heap = (int *) malloc(heap_size * block_size * sizeof(int));
}
 
Memory::~Memory()
{
    bit_set = (int *) realloc (bit_set, 0);
    heap = (int *) realloc (heap, 0);
}
 
int* Memory::find()
{
    FOR(i,0,heap_size)
        if (!bit_set[i])
        {
            bit_set[i] = 1;
            return (heap + i*block_size);
        }
    return 0;
}
 
void Memory::free(int *n)
{
    bit_set[ (n - heap)/block_size ] = 0;
}
 
//class stack-------------------------------------------------------------------
 
Memory my_mem;
 
stack::stack()
{
    top = 0;
    head = new node;
    head->prev = 0;
    head->val = my_mem.find();
}
 
stack::~stack()
{
    delete head;
}
 
void stack::push(int &n)
{
    if (top == block_size)
    {
        top = 0;
        node* tmp = new node;
        tmp->prev = head;
        tmp->val = my_mem.find();
        head = tmp;
    }
    else head->val[top++] = n;
}
 
int stack::pop()
{
    if (top == 0)
    {
        node* tmp = head;
        my_mem.free(tmp->val);
        head = head->prev;
        delete tmp;
        top = block_size-1;
        return head->val[top--];
    }
    else return head->val[top--];
}
А так? Она теперь выдает предпоследний элемент вместо последнего (вернее тот, который перед последним, что в даном случае разные вещи)
тема расположена по адресу: Быстрый стек, с малым обьемом памяти
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru