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

вопрос по стеках (stack) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Подключение библиотеки http://www.cyberforum.ru/cpp-beginners/thread378423.html
Здравствуйте! Мне нужно подлючить библиотеку к моей программе. Я подключил h-файл, lib-файл. Компилируется, но при запуске появляется окно для запуска debugger'а с сообщением: "An unhandled Win32 exception occurred in Proj_Name.exe " Я попытался перекомпилировать библиотеку (исходники есть), но писали код, видимо, для старого компилятора: много конструкций такого вида: for(int n = 0; n <...
C++ где можно скачать visual studio 2008 всем привет! подскажите где можно скачать visual studio 2008? http://www.cyberforum.ru/cpp-beginners/thread378420.html
C++ Функция - шаблон ,параметр - двумерный массив типа Т .
Как правильно прописать в параметры функции двумерный массив типа Т ?(шаблонная функция) Видел формулу преобразования двумерного в одномерный ,но так не хочу .Хочу научиться и разобраться как оно всё в памяти лежит и как к нему обращаться .
C++ Вопрос по функциям
Вопрос по функции. мне надо, чтобы моя функция "proverka" принимала значение переменной boo. но на простое присвоение компилятор ругается. как сделать правильно? void proverka(){ int count, count2; bool boo; boo=true; Form9->StringGrid3->Cells="0";
C++ conversion from ‘char’ to ‘const char*’ http://www.cyberforum.ru/cpp-beginners/thread378380.html
Всем добрый вечер! Я хочу выполнить команду is.open(file_name, ios::binary); но функция open требует тип const char file_name, а хотелось бы вводить название файла с консоли, поэтому тип у меня char file_name. Как здесь поступить?
C++ Курсовой проэкт на С++ Прошу помочь с курсовым проектом на языке С++, с пояснениями и ветвлениями, обязательно с помощью подпрограмм. Вот задание: Тема: Введение файла данных библиотечного фонда колледжа и поиск определенной информации. Условие задачи: Составить программу, содержащую сведения о книгах библиотечного фонда колледжа. Каждая запись содержит: - Код книги; - Автор; - Название; - Год... подробнее

Показать сообщение отдельно
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
06.11.2011, 01:18     вопрос по стеках (stack)

Не по теме:

Хм. Мне стало скучно, и я реализовал свой стек с блекджек... Ну вы поняли.


Алгоритм в самом конце, в функции main. Вроде должен работать. Перемещать из второго стека в главный не стал, если надо - допилите, напильник прилагается.
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
#include <iostream>
#include <iomanip>
 
const int STEP = 10;
 
template <typename T>
class Stack
{
public:
    Stack();
    Stack(int); 
    ~Stack();
    void push(T);
    T pop();
    int getSize();
    
private:
    T *stack;
    int size;
    int count;
};
 
template <typename T>
Stack<T>::Stack() : size(STEP), count(0)
{
    stack = new T [size];
}
 
template <typename T>
Stack<T>::Stack(int n) : size(n), count(0)
{
    stack = new T [size];
}
 
template <typename T>
Stack<T>::~Stack()
{
    delete[] stack;
}
 
template <typename T>
void Stack<T>::push(T num)
{
    if(++count != size)
        stack[count - 1] = num;
    else
    {
        T *buf = new T [size + STEP];
        for(int i = 0; i < size; ++i)
            buf[i] = stack[i];
        delete[] stack;
        stack = new T [size + STEP];
        for(int i = 0; i < size; ++i)
            stack[i] = buf[i];
        delete[] buf;
        size += STEP;
        stack[count - 1] = num;
    }
}
 
template <typename T>
T Stack<T>::pop()
{
    return stack[--count];
}
 
template <typename T>
int Stack<T>::getSize()
{
    return count;
}
 
int main()
{
    Stack<float> stack;
    float tmp;
    while(std::cin >> tmp)
        stack.push(tmp);
    if(stack.getSize() == 0)
        return 0;
    
    Stack<float> buf;
    float a, b;
    while(stack.getSize() > 0)
    {
        if(stack.getSize() == 1)
        {
            buf.push(stack.pop());
            break;
        }
        
        a = stack.pop();
        do
            b = stack.pop();
        while((stack.getSize() > 0) && (a == b));
        
        buf.push(a);
        if(a != b)
            stack.push(b);
    }
 
    //Begin of напильник. Заменить им вывод стека.
    //while(buf.getSize() > 0)
    //    stack.push(buf.pop());
    //while(stack.getSize() > 0)
    //    std::cout << stack.pop() << std::setw(6);
    //End of напильник
    
    while(buf.getSize() > 0)
        std::cout << buf.pop() << std::setw(6);
    
    return 0;
}
}
 
Текущее время: 11:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru